Как использовать пользовательские типы Post To Организация маркетинговых кампаний в Интернете

Пользовательские типы сообщение добавить уровень гибкости для WordPress, который делает это с открытым исходным кодом веб-платформа для разработки более полезно на многих уровнях.Всякий раз, когда я столкнулся с веб-задача, особенно тот, который включает в себя организацию информации, первое, что я делаю, это изучить WordPress, чтобы определить, если он может справиться с такой задачей.Она, как правило can.


Making Dollars
изображение Source

Как маркетолог Интернет и аналитик, я должен быть в состоянии организовать маркетинговых кампаний в Интернете таким образом, что это отслеживаются в 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;
      }
   }

После того как наши колонны установлены соответствующим образом, мы должны увидеть следующие столбцы (обратите внимание, что этот пример с одной кампании уже добавлено):

Campaigns in columns

Следующий раздел позволяет указать, какой шаблон мы хотели бы использовать для отображения этого пользовательский тип записи.Мы будем использовать 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 кампании” появится экран:

Add new post

Если CampaignTracker10 существует, то мы инициируем плагина:

   if(class_exists('CampaignTracker10')){

      // Initiate the plugin
      add_action("init", "CampaignTracker10Init");

      function CampaignTracker10Init() {
         global $gaca10;
         $gaca10 = new CampaignTracker10();

      }
   }

Сочетание этих функций в campaign-tracker.php file.

Следующи …

Если вы хотите прочитать полностью статью, посетите сайт наших спонсоров

Comments are closed.