Google Website Optimizer

А Вы знаете, в чём разница между add_action() и add_filter()?

Google Website Optimizer — , интегрирующий одноимённый сервис Google с .

У плагина есть один недостаток: на данный момент он написан криво и, как следствие, конфликтует со всеми плагинами, которые устанавливают свой фильтр на событие the_content.

Продолжая тему об ошибках при написании плагинов: основная ошибка состоит в том, что плагин устанавливает обработчик действия (action) вместо фильтра (filter), в результате чего все обработчики the_content, выполняющиеся после плагина, получают пустую строку (фильтры возвращают результат, а обработчики действий — нет).

Исправленная версия плагина выглядит следующим образом:

<?php
/*
Plugin Name: Google Website Optimizer for WordPress
Plugin URI: http://websiteoptimizer.contentrobot.com
Description: A plugin for integrating <a href="http://services.google.com/websiteoptimizer">Google Website Optimizer</a> into blog posts and pages. Please read the <a href="http://websiteoptimizer.contentrobot.com/2007/03/24/google-website-optimizer-plugin/#setup">setup procedure</a> for more info. Developed in coordination with <a href="http://www.futurenowinc.com">Future Now</a>.
Author: ContentRobot
Version: 0.2a
Author URI: http://www.contentrobot.com
*/


function go4wp_control_script() {
    global $wp_query;
    if (is_single() or is_page()) {
        if ($wp_query->post) {
            $post = $wp_query->post;
            //if the page/post has control code, display it
            if (get_post_meta($post->ID, 'go_control_script', true)) {
                echo get_post_meta($post->ID, 'go_control_script', true) . "\n";
            }
        }
    }
}
add_action('wp_head', 'go4wp_control_script');

function go4wp_tracking_script($content) {
    global $wp_query;
    if (is_single()) {
        if ($wp_query->post) {
            $post = $wp_query->post;
            //if the page/post has both test and conversion code, display both
            if (get_post_meta($post->ID, 'go_tracking_script_test', true) && get_post_meta($post->ID, 'go_tracking_script_conversion', true)) {
                return $content . "\n" . get_post_meta($post->ID, 'go_tracking_script_test', true) . "\n\n" . get_post_meta($post->ID, 'go_tracking_script_conversion', true) . "\n";
            }
            //if the page/post has test code display it
            if (get_post_meta($post->ID, 'go_tracking_script_test', true)) {
                return $content . "\n" . get_post_meta($post->ID, 'go_tracking_script_test', true) . "\n";
            }
            //if the page/post has conversion code, display it
            if (get_post_meta($post->ID, 'go_tracking_script_conversion', true)) {
                return $content . "\n" . get_post_meta($post->ID, 'go_tracking_script_conversion', true) . "\n";
            }
        }
    }
   
    return $content;
}
add_filter('the_content', 'go4wp_tracking_script');

?>
Автор: ; опубликовано в: Плагины WordPress; метки: Google Website Optimizer, WordPress, плагин
20
Май
2009

RSS Комментарии к статье «Google Website Optimizer» (8)  »

  1. Pavel

    спасибо за пример, Вы очень заинтересовали меня своими работами

  2. Спасибо за исправления, а то я долго навскидку не мог понять, что делает плагин, вначале даже подумал, что плагин вместо некоторых анонсов публикует полные статьи (что только не придумают для сео)… теперь все ясно!

  3. Я посмотрел, этот плагин тестировался по версию 2.8.4 – на более новых версиях он будет работать?

  4. Сергей

    Привет! Это очень полезный плагин, но с версии 3.1 ВП он перестал работать. Разработчик вроде итальянец, до него не допишешься и будет ли он его поддерживать непонятно. А плагин нужный! Что делать?

    Може Вы со своими познаниями сможете продолжить его поддержку? Дело то нужное.

  5. Сергей

    Это для подписки на емейл- не поставил галку в предыдущем комменте.

Пожалуйста, не используйте эту форму для комментирования! Данная форма предназначена исключительно для ботов.

Оставить комментарий к записи «Google Website Optimizer»

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Оставляя комментарий, вы выражаете своё согласие с Правилами комментирования.

Подписаться, не комментируя

गते गते पारगते पारसंगते बोधि स्वाहा