In wordpress I am manipulation 404 response. I want to give the response before 404 error is given to google

May be the question in title is not explaining what exactly I want. So I will explain one logic and then ask what problem I am getting from that.

We are using wordpress. We have 2 categories Option1(Having 64 different values) and Option2(Having 8 different values). We wanted url like ourdomain/Option1/Option2 depending on users location. And data on that url will be specific according to that Option1 and Option2. We dont wanted all this 64*8 actual wordpress pages to be created.

Read More

So after searching much on net we had one solution that I implemented one plugin for routing.

IN that code snippet was as follow.

function site_router() {

global $route,$wp_query,$window_title;
error_reporting(E_ALL);
if ( $wp_query->is_404 ) 
    {
        $wp_query->is_404 = false;
        $cUrl="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
        $targetUrl="";
        switch($cUrl)
                {
                /* According to condition  I had written diffent cases like below.
                */
        default :
            {           
            include(get_template_directory() . "/home.php" ); 
            $template =locate_template('pagepath/home.php');
                        $window_title = 'dynamically it will come';
                        if ($template) {
                        load_template($template);
                        die;
                        }
                    }                   

                }
         }
}

add_action( 'wp', 'site_router');

So by this my purpose was fulfilled successfully.

But now problem is that google is saying they are getting back a 404 error. I think obviosly it will give as after it gives the error we are doing all template loading and all stuff.

So Can any body guide me how can I do this before that 404 response is given to google.

Related posts

Leave a Reply

1 comment

  1. WordPress has a function to send a different status header:

    status_header( 200 );
    

    If you send that after WordPress has send its headers and before you print anything you will get a status header 200.

    You could also filter 'status_header' and change the value there. See wp-includes/functions.php for details.