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:

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()

register_deactivation_hook( __FILE__, 'HalfSpacePlugin_deactivate' );

function HalfSpacePlugin_deactivate()

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

Can anybody help me?

2 Answers 2


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' );

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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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