Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I am now passing parameters to a custom template in the following format

www.example.com/?pageid=12&rid=24&title=this-is-the-title

I have created two tables . So I need to fetch data and display them on those pages.

I would like it to be using clean URL format like:

www.example.com/pageid/12/rid/24/title/this-is-the-title

Can anyone tell how this can be achieved?

Thanks

share|improve this question
    
Totally possible, but you have to be mindful of your variable slugs to avoid conflicts. Take a look at this article on the WordPress codex... this is probably the hook you would want to use and it shows a sample rewrite array... codex.wordpress.org/Plugin_API/Filter_Reference/… –  Matt Van Andel Mar 3 '13 at 16:27
add comment

1 Answer 1

If you want a simple solution this might be it (haven't tested the code so might not be so simple if it's not working...) or atleast it give some hint what you need to do. If you visit http://thereforei.am/2011/10/28/advanced-taxonomy-queries-with-pretty-urls/ you will find a bonus prize: A Rewrite Rule Generator in the article. I have used this before but not in a situation exactly like this. Try to combine that function with something like this:

add_rewrite_tag('%pageid%','([^&]+)');
add_rewrite_tag('%rid%','([^&]+)');
add_rewrite_tag('%title%','([^&]+)');

/* Generate rewrite rules. */
add_action( 'generate_rewrite_rules', 'example_add_rewrite_rules' );
function example_add_rewrite_rules() {
    global $wp_rewrite;
    $new_rules = eg_generate_rewrite_rules( 'post' , array('pageid','rid','title')); //    post = the post type you use
    $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}

/* Flush rewrite rules on theme activation only. */
add_action( 'load-themes.php', 'frosty_flush_rewrite_rules' );
function frosty_flush_rewrite_rules() {
    global $pagenow;
    if ( 'themes.php' == $pagenow && isset( $_GET['activated'] ) )
        flush_rewrite_rules();
}

If you don't want to use the eg_generate_rewrite_rules function, you need to set up the rules yourself. You can find information on how to do that in that article.

More info: http://codex.wordpress.org/Rewrite_API/add_rewrite_tag

share|improve this answer
add comment

Your Answer

 
discard

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.