WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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?

share|improve this question
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


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.