Google Website Optimizer
А Вы знаете, в чём разница между add_action() и add_filter()?
Google Website Optimizer — плагин, интегрирующий одноимённый сервис Google с WordPress.
У плагина есть один недостаток: на данный момент он написан криво и, как следствие, конфликтует со всеми плагинами, которые устанавливают свой фильтр на событие the_content.
Продолжая тему об ошибках при написании плагинов: основная ошибка состоит в том, что плагин устанавливает обработчик действия (action) вместо фильтра (filter), в результате чего все обработчики the_content, выполняющиеся после плагина, получают пустую строку (фильтры возвращают результат, а обработчики действий — нет).
Исправленная версия плагина выглядит следующим образом:
/*
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');
?>
Май
2009
Комментарии к статье «Google Website Optimizer» (8) »
Пожалуйста, не используйте эту форму для комментирования! Данная форма предназначена исключительно для ботов.
Оставить комментарий к записи «Google Website Optimizer»
गते गते पारगते पारसंगते बोधि स्वाहा
Меня зовут Владимир, я программист-фрилансер, специализирующийся на Web-программировании и програмировании под Linux.
По совместительству занимаюсь администрированием LAMP/LNMP-серверов и техническим переводом.


спасибо за пример, Вы очень заинтересовали меня своими работами
Спасибо за исправления, а то я долго навскидку не мог понять, что делает плагин, вначале даже подумал, что плагин вместо некоторых анонсов публикует полные статьи (что только не придумают для сео)… теперь все ясно!
Я посмотрел, этот плагин тестировался по версию 2.8.4 – на более новых версиях он будет работать?
Без понятия, я его себе никогда не ставил.
Привет! Это очень полезный плагин, но с версии 3.1 ВП он перестал работать. Разработчик вроде итальянец, до него не допишешься и будет ли он его поддерживать непонятно. А плагин нужный! Что делать?
Може Вы со своими познаниями сможете продолжить его поддержку? Дело то нужное.
Сергей, попробуйте http://wordpress.org/extend/plugins/google-website-optimizer-for-wordpress/
Да, спасибо
я разработчику вчера тоже пожаловался, видимо достучался. Спасибо!
Это для подписки на емейл- не поставил галку в предыдущем комменте.