WordPress.org

Plugin Directory

Changeset 608688


Ignore:
Timestamp:
10/05/12 21:06:05 (19 months ago)
Author:
aaroncampbell
Message:

Add support for tokens in custom variables

Location:
wp-google-analytics/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • wp-google-analytics/trunk/readme.txt

    r606784 r608688  
    1111== Description == 
    1212 
    13 Lets you use <a href="http://analytics.google.com">Google Analytics</a> to track 
    14 your WordPress site statistics.  It is easily configurable to: 
     13WP Google Analytics makes it easy to track your site's usage, with lots of 
     14helpful additional data. 
    1515 
    16 * Not log anything in the admin area 
    17 * Log 404 errors as events 
    18 * Log outgoing links as events 
    19 * Not log any user roles (administrators, editors, authors, etc) 
    20 * Use custom variables 
     16Features: 
     17 
     18* Uses Google's asynchronous tracking method which is faster and more reliable. 
     19* Automatically tracks site speed 
     20* Option to log outgoing links as events 
     21* Option to log 404 errors as events 
     22* Use custom variables in Google Analytics to track additional data on pageviews including: 
     23    * Author 
     24    * Categories 
     25    * Tags 
     26    * Context (such as home, category, post, author, etc) 
     27    * Date 
     28    * Logged in 
     29    * Anything - Use the built-in filter to add your own! 
     30* Allows you to ignore any user roles (administrators, editors, authors, etc) 
     31 
     32<a href="http://bluedogwebservices.com/wordpress-plugin/wp-google-analytics/">WP Google Analytics</a> 
     33Brought to you by <a href="http://ran.ge/" title="WordPress Development">Ran.ge</a> 
    2134 
    2235== Installation == 
     
    4154WordPress uses 's' as the query parameter. 
    4255 
     56= What tokens are support for custom variables? = 
     57 
     58All the built-in tokens are described on the settings page.  You can also add 
     59your own using the 'wga_tokens' filter. 
     60 
    4361= Can't I just paste the Google Analytics code into my template file? = 
    4462 
     
    5068== Upgrade Notice == 
    5169 
     70= 1.4.0 = 
     71Allow tokens in the custom variables 
     72 
    5273= 1.3.1 = 
    5374Fix for custom variables not being tracked 
     
    5778 
    5879== Changelog == 
     80 
     81= 1.4.0 = 
     82* Support for tokens in custom variables 
    5983 
    6084= 1.3.1 = 
  • wp-google-analytics/trunk/wp-google-analytics.php

    r606764 r608688  
    44 * Plugin URI: http://bluedogwebservices.com/wordpress-plugin/wp-google-analytics/ 
    55 * Description: Lets you use <a href="http://analytics.google.com">Google Analytics</a> to track your WordPress site statistics 
    6  * Version: 1.3.1 
     6 * Version: 1.4.0 
    77 * Author: Aaron D. Campbell 
    88 * Author URI: http://ran.ge/ 
     
    1111 */ 
    1212 
    13 define('WGA_VERSION', '1.3.1'); 
     13define('WGA_VERSION', '1.4.0'); 
    1414 
    1515/*  Copyright 2006  Aaron D. Campbell  (email : wp_plugins@xavisys.com) 
     
    4444    static $page_slug = 'wp-google-analytics'; 
    4545 
     46    var $tokens = array(); 
     47 
    4648    /** 
    4749     * This is our constructor, which is private to force the use of get_instance() 
     
    4951     */ 
    5052    private function __construct() { 
    51         add_filter( 'init',                     array( $this, 'init_locale' ) ); 
     53        add_filter( 'init',                     array( $this, 'init' ) ); 
    5254        add_action( 'admin_init',               array( $this, 'admin_init' ) ); 
    5355        add_action( 'admin_menu',               array( $this, 'admin_menu' ) ); 
     
    6668    } 
    6769 
    68     public function init_locale() { 
     70    public function init() { 
    6971        load_plugin_textdomain( 'jetpack', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' ); 
     72 
     73        $this->tokens = array( 
     74                array( 
     75                        'token'            => '%the_author%', 
     76                        'callback'         => 'get_the_author', 
     77                        'callback_returns' => 'string', 
     78                        'description'      => __( 'Post author for current view', 'wp-google-analytics' ), 
     79                        'retval'           => __( "Post author's display name", 'wp-google-analytics' ), 
     80                        'ignore_when'      => array( 
     81                                'is_home', 
     82                                'is_front_page', 
     83                                'is_post_type_archive', 
     84                                'is_page', 
     85                                'is_date', 
     86                                'is_category', 
     87                                'is_tag', 
     88                            ), 
     89                    ), 
     90                array( 
     91                        'token'            => '%the_category%', 
     92                        'callback'         => array( $this, 'token_the_category' ), 
     93                        'callback_returns' => 'string', 
     94                        'description'      => __( 'Categories assigned to a post', 'wp-google-analytics' ), 
     95                        'retval'           => __( "Category names in a commma-separated list", 'wp-google-analytics' ), 
     96                        'ignore_when'      => array( 
     97                                'is_home', 
     98                                'is_front_page', 
     99                                'is_page', 
     100                                'is_post_type_archive', 
     101                                'is_author', 
     102                                'is_tag', 
     103                            ), 
     104                    ), 
     105                array( 
     106                        'token'            => '%context%', 
     107                        'callback'         => array( $this, 'token_context' ), 
     108                        'callback_returns' => 'string', 
     109                        'description'      => __( 'Which view the visitor is on', 'wp-google-analytics' ), 
     110                        'retval'           => __( "Samples: 'home', 'category', 'post', 'author'" ), 
     111                    ), 
     112                array( 
     113                        'token'            => '%the_date%', 
     114                        'callback'         => 'get_the_date', 
     115                        'callback_returns' => 'string', 
     116                        'description'      => __( 'Publication date for the current view', 'wp-google-analytics' ), 
     117                        'retval'           => __( "Format specified by 'Date Format' in Settings -> General", 'wp-google-analytics' ), 
     118                        'ignore_when'      => array( 
     119                                'is_home', 
     120                                'is_front_page', 
     121                                'is_post_type_archive', 
     122                                'is_page', 
     123                                'is_author', 
     124                                'is_category', 
     125                                'is_tag', 
     126                            ), 
     127                    ), 
     128                array( 
     129                        'token'            => '%the_tags%', 
     130                        'callback'         => array( $this, 'token_the_tags' ), 
     131                        'callback_returns' => 'string', 
     132                        'description'      => __( 'Tags assigned to a post', 'wp-google-analytics' ), 
     133                        'retval'           => __( "Tag names in a commma-separated list", 'wp-google-analytics' ), 
     134                        'ignore_when'      => array( 
     135                                'is_home', 
     136                                'is_front_page', 
     137                                'is_page', 
     138                                'is_post_type_archive', 
     139                                'is_date', 
     140                                'is_category', 
     141                                'is_author', 
     142                            ), 
     143                    ), 
     144                array( 
     145                        'token'            => '%is_user_logged_in%', 
     146                        'callback'         => 'is_user_logged_in', 
     147                        'callback_returns' => 'bool', 
     148                        'description'      => __( 'Whether or not the viewer is logged in', 'wp-google-analytics' ), 
     149                        'retval'           => __( "'true' or 'false'", 'wp-google-analytics' ), 
     150                    ), 
     151            ); 
     152 
     153        $this->tokens = apply_filters( 'wga_tokens', $this->tokens ); 
    70154    } 
    71155 
     
    81165     */ 
    82166    public function admin_init() { 
     167 
    83168        register_setting( 'wga', 'wga', array( $this, 'sanitize_general_options' ) ); 
    84169 
     
    94179     */ 
    95180    public function field_code() { 
     181        // Display the tokens in the right column of the page 
     182        echo '<div id="tokens-description" style="position:absolute;margin-left:600px;margin-right:50px;">'; 
     183        echo '<span>' . __( 'Use tokens in your custom variables to make your fields dynamic based on context. Here are some of the tokens you can use:' ) . '</span>'; 
     184        echo '<table style="text-align:left;">'; 
     185        echo '<thead><tr><td>' . __( 'Token', 'wp-google-analytics' ) . '</td><td>' . __( 'Description', 'wp-google-analytics' ) . '</td><td>' . __( 'Return value', 'wp-google-analytics' ) . '</td></tr></thead>'; 
     186        echo '<tbody>'; 
     187        foreach( $this->tokens as $token ) { 
     188            echo '<tr>'; 
     189            echo '<td>' . esc_html( $token['token'] ) . '</td>'; 
     190            echo '<td>' . esc_html( $token['description'] ) . '</td>'; 
     191            echo '<td>' . esc_html( $token['retval'] ) . '</td>'; 
     192            echo '</tr>'; 
     193        } 
     194        echo '</tbody>'; 
     195        echo '</table>'; 
     196        echo '</div>'; 
     197 
    96198        echo '<input name="wga[code]" id="wga-code" type="text" value="' . esc_attr( $this->_get_options( 'code' ) ) . '" />'; 
    97199        echo '<p class="description">' . __( 'Paste your Google Analytics tracking ID (e.g. "UA-XXXXXX-X") into the field.', 'wp-google-analytics' ) . '</p>'; 
     
    119221     */ 
    120222    public function field_custom_variables() { 
     223 
    121224        $custom_vars = $this->_get_options( 'custom_vars' ); 
    122225 
     
    146249            echo '</label><br />'; 
    147250        } 
     251 
    148252    } 
    149253 
     
    301405            if ( empty( $custom_var['name'] ) || empty( $custom_var['value'] ) ) 
    302406                continue; 
     407 
     408            // Check whether a token was used with this custom var, and replace with value if so 
     409            $all_tokens = wp_list_pluck( $this->tokens, 'token' ); 
     410            if ( in_array( $custom_var['value'], $all_tokens ) ) { 
     411                $token = array_pop( wp_filter_object_list( $this->tokens, array( 'token' => $custom_var['value'] ) ) ); 
     412 
     413                // Allow tokens to return empty values for specific contexts 
     414                $ignore = false; 
     415                if ( ! empty( $token['ignore_when'] ) ) { 
     416                    foreach( (array)$token['ignore_when'] as $conditional ) { 
     417                        if ( is_callable( $conditional ) ) { 
     418                            $ignore = call_user_func( $conditional ); 
     419                            if ( $ignore ) 
     420                                break; 
     421                        } 
     422                    } 
     423                } 
     424 
     425                // If we aren't set to ignore this context, possibly execute the callback 
     426                if ( ! $ignore && ! empty( $token['callback'] ) && is_callable( $token['callback'] ) ) 
     427                    $replace = call_user_func( $token['callback'] ); 
     428                else 
     429                    $replace = ''; 
     430 
     431                if ( ! empty( $token['callback_returns'] ) && 'bool' == $token['callback_returns'] ) 
     432                    $replace = ( $replace ) ? 'true' : 'false'; 
     433 
     434                // Replace our token with the value 
     435                $custom_var['value'] = str_replace( $custom_var['value'], $replace, $custom_var['value'] ); 
     436            } 
     437 
    303438            $atts = array( 
    304439                    "'_setCustomVar'", 
     
    395530    } 
    396531 
     532    /** 
     533     * Callback for %the_category% token 
     534     */ 
     535    public function token_the_category() { 
     536        return implode( ', ', wp_list_pluck( (array)get_the_category(), 'name' ) ); 
     537    } 
     538 
     539    /** 
     540     * Callback for %context% token 
     541     */ 
     542    public function token_context() { 
     543        if ( is_admin() ) { 
     544            return 'admin'; 
     545        } else if ( is_home() || is_front_page() ) { 
     546            return 'home'; 
     547        } else if ( is_tax() || is_tag() || is_category() ) { 
     548            return get_queried_object()->taxonomy; 
     549        } else if ( is_author() ) { 
     550            return 'author'; 
     551        } else if ( is_singular() || is_single() || is_page() ) { 
     552            return get_post_type(); 
     553        } else if ( is_search() ) { 
     554            return 'search'; 
     555        } else if ( is_date() ) { 
     556            return 'date'; 
     557        } else if ( is_archive() ) { 
     558            return 'archive'; 
     559        } else if ( is_404() ) { 
     560            return '404'; 
     561        } 
     562    } 
     563 
     564    /** 
     565     * Callback for %the_tags% token 
     566     */ 
     567    public function token_the_tags() { 
     568        return implode( ', ', wp_list_pluck( (array)get_the_tags(), 'name' ) ); 
     569    } 
     570 
    397571} 
    398572 
Note: See TracChangeset for help on using the changeset viewer.