mytechead

Android & Wordpress Help center

WordPress page rewrite

Lately I was working on rewriting a WP page url so that the browser address that is loaded by a user doesn’t changes but internally the request is sent to some other page.

After spending hours on this and trying every possible .htaccess rules that I have knowledge of I finally came accross this super amazing WP class called WP_Rewrite.

Although the life didn’t become much easy when I found this class, but I had this feeling some where deep inside me that this class of WP  will prove to be a life saver for me.. and yes it did!

What I was trying:

1)  User loads a url:

http://mytechead.wordpress.com/android/first-post/hello-world/

and gets served a page which actually resides here:

http://mytechead.wordpress.com/android/hello-world/

without the url in address bar getting changed.

What did the trick: 

I added a WP filter called page_rewrite_rules, and coded a method which added my custom rewrite rules to the array of WP rewrite rules.

The code is something like this:

add_filter( ‘page_rewrite_rules’, ‘my_page_rewrite_rules’ );
function my_page_rewrite_rules( $rewrite_rules )
{
// The most generic page rewrite rule is at end of the array
// We place our rule one before that
end( $rewrite_rules );
$last_pattern = key( $rewrite_rules );
$last_replacement = array_pop( $rewrite_rules );
$rewrite_rules += array(
‘first-post/hello-world/?$’ => ‘index.php?pagename=hello-world’,
$last_pattern => $last_replacement,
);
return $rewrite_rules;
}

Now to make this rule apply to your WP installation, you need to flush out the existing rewrites so that new rewrites are generated. I avoided a little coding here and followed this procedure:

1) Go to your site’s permalink settings.

2) Change your settings to default and save.

3) Change your settings to YOUR OWN CUSTOM SETTINGS that you are using on your website.

The above 3 steps will flush and re-create the rewrite rules for your site and the new rewrite will come into effect.

Happy pressing!

About these ads

Single Post Navigation

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 301 other followers

%d bloggers like this: