Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I'm developing a plugin to replace a character for some user agents in titles, posts and comments but the filter doesn't work. Here is the plugin:

<?php
/*
Plugin Name: WP-HalfSpace
Description: نمایش فاصله به‌جای نیم‌فاصله برای گوگل برای خراب‌نشدن نوشته در نتایج جست‌وجوی گوگل
Version: 1.0.0
Author: ahmadalli
Author URI: http://2barnamenevis.com
*/
function HalfSpace_filter($content)
{

    $u_agent = $_SERVER['HTTP_USER_AGENT'];
    echo "hi";
    if(($u_agent=="Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" )
    || ($u_agent=="Googlebot/2.1 (+http://www.googlebot.com/bot.html)")
    || ($u_agent=="Googlebot/2.1 (+http://www.google.com/bot.html)")
    || ($u_agent=="Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)")
    )
    { 
        echo "aaaaaaaaa";
        $content=str_ireplace("‌‌"," ",$content); //"" is not empty. it's a persian character names halfspace.
    }
    return $content;
}

register_activation_hook( __FILE__, 'HalfSpacePlugin_activate' );

function HalfSpacePlugin_activate()
{
    add_filter('the_title','HalfSpace_filter',1,1);
    add_filter('the_content','HalfSpace_filter',1,1);
    add_filter('comment_text','HalfSpace_filter',1,1);
}



register_deactivation_hook( __FILE__, 'HalfSpacePlugin_deactivate' );

function HalfSpacePlugin_deactivate()
{
    remove_filter('the_title','HalfSpace_filter');
    remove_filter('the_content','HalfSpace_filter');
    remove_filter('comment_text','HalfSpace_filter');
}
?>

The filter doesn't work at all because echo "hi"; in HalfSpace_filter doesn't do it's job!

Can anybody help me?

share|improve this question

2 Answers 2

up vote 4 down vote accepted

register_activation_hook and register_deactivation_hook refer to when the plugin is activated and deactivated, respectively, and only fire in those two instances. They're to be used, for example, when you need to add a database table (and take it back down). You don't need to remove your filters, either. Your plugin can just be shortened to:

function HalfSpace_filter( $content ) {
    $u_agent = $_SERVER['HTTP_USER_AGENT'];
    echo "hi";
    if ( ( $u_agent=="Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" )
    || ( $u_agent=="Googlebot/2.1 (+http://www.googlebot.com/bot.html)" )
    || ( $u_agent=="Googlebot/2.1 (+http://www.google.com/bot.html)" )
    || ( $u_agent=="Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)" )
    ) { 
        echo "aaaaaaaaa";
        $content = str_ireplace( "‌‌", " ",$content ); //"" is not empty. it's a persian character names halfspace.
    }
    return $content;
}
add_filter( 'the_title','HalfSpace_filter' );
add_filter( 'the_content','HalfSpace_filter' );
add_filter( 'comment_text','HalfSpace_filter' );
share|improve this answer

Activation and deactivation handlers are called during plugin activation and deactivation only. Hence the name. Just remove that condition, and it will work.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.