将自定义URL段添加到WordPress页面


Add custom URL segment to wordpress page

我试图允许我的页面接收查询变量,但将其重写为漂亮的永久链接。所以我想要这个

example.com/wordpress-page/random

所以我不希望random成为子页面或类似的东西,因为它来自外部服务。为此,我已将此代码添加到我的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');

当我转到example.com/wordpress-page时,我得到了我的页面,但是当我转到example.com/wordpress-page/random时,我得到了404页面。

我通过在面板中保存永久链接来刷新重写规则wp-admin

我哪里做错了?

我发现我需要调用flush_rewrite_rules()函数。这是除了上面已经演示的query_vars动作钩子和add_rewrite_rule()函数之外完成的。

就我而言,我选择将其放在主题的功能中.php使用 switch_theme 动作钩子并停用/重新激活我的主题。但是你可以把它放在其他地方,只要它在某个时候被调用一次(所以可能不是"init")

add_action('switch_theme', 'mytheme_setup_options');
function mytheme_setup_options () {
    flush_rewrite_rules();
}