我试图允许我的页面接收查询变量,但将其重写为漂亮的永久链接。所以我想要这个
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();
}