Пользовательские типы сообщение добавить уровень гибкости для WordPress, который делает это с открытым исходным кодом веб-платформа для разработки более полезно на многих уровнях.Всякий раз, когда я столкнулся с веб-задача, особенно тот, который включает в себя организацию информации, первое, что я делаю, это изучить WordPress, чтобы определить, если он может справиться с такой задачей.Она, как правило can.
Как маркетолог Интернет и аналитик, я должен быть в состоянии организовать маркетинговых кампаний в Интернете таким образом, что это отслеживаются в Google Analytics.Это идеальная задача для WordPress таможенный пост types.
В этой статье мы расскажем, как создать плагин WordPress, который позволяет организовать интернет-маркетинг кампаний с использованием URL-адреса отслеживаются, укороченные версии этих URL-адресов, отслеживаемых и QR-коды, которые можно использовать в оффлайн-маркетинге activities.
Мы покажем вам, как создать этот плагин таким образом, что обеспечивает максимальную простоту использования и функциональность.Если у вас есть другие методы, что вы нашли полезным, пожалуйста, поделитесь ими в комментариях.Кроме того, давайте помнить, что мы стоим на плечах разработчиков WordPress, которые заложили основу для более легкого coding.
Вот критерии для наших пользовательских плагинов типа сообщение:
- Она должна обеспечить форму, в которой пользователи могут указать целевой страницы, которые необходимо отслеживать, якорный текст или содержание, срок (если эта связь PPC реклама), а также любую дополнительную информацию об этом link.
- Она должна обеспечить три пользовательских типов таксономии, так что пользователи могут выбрать URL переменные для названия источника, средних и кампании.Это таксономии типа, поскольку они будут многоразовые всей кампании и posts.
- Она должна быть организуемой в админке и отображаются в пользовательском interface.
- Выход должна включать в себя Google Analytics кампании отслеживаются URL-адрес, информацию о URL в человека-читаемом формате, укороченный вариант URL использовании URL Shortener, и QR код сокращен URL.
Файл Structure
Этот плагин будет использовать три файла.Чтобы создать структуру, создать плагин папку campaign-tracker
.Внутри campaign-tracker
папки, создать следующие три PHP файлов:
-
campaign-tracker.php
-
ga-functions.php
-
campaign-template.php
После создания файла, мы готовы начать добавлять code.
Плагин File
Основной файл плагина будет campaign-tracker.php
.Содержимое этого файла будет начинаться стандартным способом, путем предоставления WordPress с информацией, что он должен признать это как плагин.Затем мы углубимся в настройку CampaignTracker10
классов и функций.Мы создали нашу кампанию таможенного поста типа и зарегистрировать таксономии, что нам нужно.Мытакже начнет нашего администратора interface.
<?php /* Plugin Name: Campaign Tracking 1.0 Plugin URI: http://www.convergeconsulting.org Description: Google Analytics Campaign Tracking system for WordPress 3.0 and above. Author: Joshua Dodson Version: 1.0 Author URI: http://www.convergeconsulting.org */ // Include the ga-functions.php helper functions include_once('ga-functions.php'); if(!class_exists('CampaignTracker10')) { class CampaignTracker10 { var $meta_fields = array("gaca10-gaurl","gaca10-gaterm","gaca10-gacontent","gaca10-gadescription"); // This function will create the custom post type. Thanks to Konstantin Kovshenin's example for additional examples of how to construct custom post types (http://kovshenin.com/2010/03/custom-post-types-in-wordpress-3-0-2089/), which inspired much of this. function __construct(){ // Register custom post types register_post_type('campaign', array( 'label' => _x('Campaigns','campaigns label'), // We're labeling the custom posts as Campaigns and also accounting for gettext appropriately 'singular_label' => _x('Campaign','campaign singular label'), // Each post will be called a Campaign 'public' => true, // These will be public 'show_ui' => true, // Show the UI in admin panel '_builtin' => false, // This is a custom post type, not a built in post type '_edit_link' => 'post.php?post=%d', 'capability_type' => 'post', 'hierarchical' => false, 'rewrite' => array("slug" => "campaign"), // This is for the permalinks 'query_var' => "campaign", // This goes to the WP_Query schema 'supports' => array('title'/* We only need the default title field, but we could use others such as 'author', 'excerpt', 'editor' ,'custom-fields'*/) )); add_filter("manage_edit-campaign_columns", array(&$this, "edit_columns")); add_action("manage_posts_custom_column", array(&$this, "custom_columns")); // Register custom taxonomies gasource (for the Campaign Source), gamedium (for the Campaign Medium), and ganame (for Campaign Name) // Campaign Source register_taxonomy("gasource", array("campaign"), array("hierarchical" => true, "label" => _x( 'Campaign Sources', 'campaign sources taxonomy label' ), "singular_label" => "Campaign Source", "rewrite" => true)); // Campaign Medium register_taxonomy("gamedium", array("campaign"), array("hierarchical" => true, "label" => _x( 'Campaign Mediums', 'campaign mediums taxonomy label' ), "singular_label" => "Campaign Medium", "rewrite" => true)); // Campaign Name register_taxonomy("ganame", array("campaign"), array("hierarchical" => true, "label" => _x( 'Campaign Names', 'campaign names taxonomy label' ), "singular_label" => "Campaign Name", "rewrite" => true)); add_action("admin_init", array(&$this, "admin_init")); add_action("template_redirect", array(&$this, 'template_redirect')); add_action("wp_insert_post", array(&$this, "wp_insert_post"), 10, 2); }
Давайте столбцов на экране администратора некоторые заголовки:
function edit_columns($columns) { $columns = array( 'cb' => '<input type="checkbox" />', 'title' => _x('Campaign Title','campaign title label for edit columns'), 'gaca10_ganame' => _x('Campaign Name','campaign name label for edit columns'), 'gaca10_gasources' => _x('Campaign Source','campaign source label for edit columns'), 'gaca10_gasmedium' => _x('Campaign Medium','campaign medium label for edit columns'), ); return $columns; }
Давайте указать, какие столбцы мы бы хотели, чтобы показать на экране администратора для этого пользовательский тип записи.Мы будем иметь столбцы источника кампании, средние и название, в дополнение к названию поста.
function custom_columns($column) { global $post; switch ($column) { // The campaign source case "gaca10_gasources": $gasources = get_the_terms(0, "gasource"); if ( $gasources && ! is_wp_error( $gasources ) ) : $gasources_html = array(); foreach ($gasources as $gasource) array_push($gasources_html, '<a href="' . get_term_link($gasource->slug, "gasource") . '">' . $gasource->name . '</a>'); echo implode($gasources_html, ", "); endif; break; // The campaign medium case "gaca10_gasmedium": $gamediums = get_the_terms(0, "gamedium"); if ( $gamediums && ! is_wp_error( $gamediums ) ) : $gamediums_html = array(); foreach ($gamediums as $gamedium) array_push($gamediums_html, '<a href="' . get_term_link($gamedium->slug, "gamedium") . '">' . $gamedium->name . '</a>'); echo implode($gamediums_html, ", "); endif; break; // The campaign name case "gaca10_ganame": $ganames = get_the_terms(0, "ganame"); if ( $ganames && ! is_wp_error( $ganames ) ) : $ganames_html = array(); foreach ($ganames as $ganame) array_push($ganames_html, '<a href="' . get_term_link($ganame->slug, "ganame") . '">' . $ganame->name . '</a>'); echo implode($ganames_html, ", "); endif; break; } }
После того как наши колонны установлены соответствующим образом, мы должны увидеть следующие столбцы (обратите внимание, что этот пример с одной кампании уже добавлено):
Следующий раздел позволяет указать, какой шаблон мы хотели бы использовать для отображения этого пользовательский тип записи.Мы будем использовать campaign-template.php
Шаблон:
function template_redirect() { global $wp; // If the post type is set and is campaign… if (isset($wp->query_vars["post_type"])) { if ($wp->query_vars["post_type"] == "campaign") { // Then use the campaign-template.php file from this plugin directory include WP_PLUGIN_DIR.'/campaign-tracker/campaign-template.php'; die(); } } }
Если сообщение вставляется или обновляется, то цикл по массиву и обновить или добавить мета поста data.
function wp_insert_post($post_id, $post = null) { if ($post->post_type == "campaign") { foreach ($this->meta_fields as $key) { $value = $_POST[$key]; if (empty($value)) { delete_post_meta($post_id, $key); continue; } if (!is_array($value)) { if (!update_post_meta($post_id, $key, $value)) { add_post_meta($post_id, $key, $value); } } else { delete_post_meta($post_id, $key); foreach ($value as $entry){ add_post_meta($post_id, $key, $entry); } } } } }
С помощью следующих функций, мы можем добавить пользовательские ящики мета для администратора экрана, где мы редактируем кампании:
function admin_init() { // Add custom meta boxes for the edit campaign screen add_meta_box("gaca10-meta", "Campaign Information", array(&$this, "meta_options"), "campaign", "normal", "core"); }
Следующие функции для администратора содержимое мета сообщение.Это позволяет нам создать форму, в которой мы определяем некоторые переменные для нашего отслеживаются URL (за исключением таксономии).Он также предоставляет поле только для чтения, который показывает, укороченные URL после URL переменные были saved.
function meta_options() { global $post; $custom = get_post_custom($post->ID); if($custom["gaca10-gaurl"][0]){ $gaurl = $custom["gaca10-gaurl"][0]; } else{ $gaurl = ''; } if($custom["gaca10-gaterm"][0]) { $gaterm = $custom["gaca10-gaterm"][0]; } else { $gaterm = ''; } if ($custom["gaca10-gacontent"][0]) { $gacontent = $custom["gaca10-gacontent"][0]; } else { $gacontent = ''; } if ($custom["gaca10-gadescription"][0]) { $gadescription = $custom["gaca10-gadescription"][0]; } else { $gadescription = ''; } $url = trackable_url(); if ($custom["campaign_tinyurl"][0]) { if($gaurl == '') { $shortenedurl = ''; } else{ $shortenedurl = create_tiny_url($url); } } ?> <label><?php _ex('Website URL:','website url label'); ?></label><input name="gaca10-gaurl" value="<?php echo $gaurl; ?>" /><br /> <em><?php _ex('(e.g., http://www.google.com)','website url example'); ?></em><br /><br /> <label><?php _ex('Campaign Term:','campaign term label'); ?></label><input name="gaca10-gaterm" value="<?php echo $gaterm; ?>" /><br /> <em><?php _ex('(identify the paid keywords)','campaign term information'); ?></em><br /><br /> <label><?php _ex('Campaign Content:','campaign content label'); ?></label><input name="gaca10-gacontent" value="<?php echo $gacontent; ?>" /><br /> <em><?php _ex('(use to differentiate ads)','campaign content information'); ?></em><br /><br /> <label><?php _ex('Campaign Description:','campaign description label'); ?></label><input name="gaca10-gadescription" value="<?php echo $gadescription; ?>" /><br /> <em><?php _ex('(use to remind yourself about this specific link)','campaign description information'); ?></em><br /><br /> <label><?php _ex('Shortened URL:','shortened URL label'); ?></label><input name="gaca10-gashortened-url" value="<?php echo $shortenedurl; ?>" readonly="readonly" /><br /> <?php } } }
Вот как “Add / Edit кампании” появится экран:
Если CampaignTracker10
существует, то мы инициируем плагина:
if(class_exists('CampaignTracker10')){ // Initiate the plugin add_action("init", "CampaignTracker10Init"); function CampaignTracker10Init() { global $gaca10; $gaca10 = new CampaignTracker10(); } }
Сочетание этих функций в campaign-tracker.php
file.
Следующи …
Если вы хотите прочитать полностью статью, посетите сайт наших спонсоров