3

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.

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.

1
  • To question is_* conditionals inside $wp_query, just use the objects method, not the resulting property: $wp_query->is_404() instead of $wp_query->is_404.
    – kaiser
    Commented Oct 24, 2012 at 20:18

1 Answer 1

2

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.

0

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.