简体   繁体   中英

Add custom URL segment to wordpress page

I'm trying to allow my page to receive query variable but to rewrite it to nice permalink. So I wanted this

example.com/wordpress-page/random

So I don't want random to be a subpage or something like that, since it's coming from outside service. In order to do this, I've added this code to my functions.php

function add_my_var($public_query_vars) {
    $public_query_vars[] = 'my_var';
    return $public_query_vars;
}

add_filter('query_vars', 'add_my_var');

function do_rewrite() {
    add_rewrite_rule('wordpress-page/([^/]+)/?$', 'index.php?name=wordpress-page&my_var=$matches[1]','top');
}

add_action('init', 'do_rewrite');

When I go to example.com/wordpress-page I get my page, but when I go to example.com/wordpress-page/random I get 404 page.

I have flushed rewrite rules by saving permalinks in wp-admin panel.

Where did I go wrong?

I found I needed to call the flush_rewrite_rules() function. That was done in addition to the query_vars action hook and add_rewrite_rule() function you already demonstrated above.

In my case I chose to put it in my theme's functions.php using the switch_theme action hook and deactivated/reactivated my theme. But you can probably put it elsewhere as long as it get's called once at some point (so probably not 'init')

add_action('switch_theme', 'mytheme_setup_options');

function mytheme_setup_options () {
    flush_rewrite_rules();
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM