我正在尝试允许我的页面接收查询变量,但要将其重写为好的永久链接。所以我想要这个
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
面板中保存永久链接来刷新重写规则。
我哪里出错了?
答案 0 :(得分:0)
我发现我需要调用flush_rewrite_rules()函数。除了上面已经演示的query_vars
动作挂钩和add_rewrite_rule()
功能外,还完成了这项工作。
在我的情况下,我选择使用switch_theme动作挂钩将其放入我的主题的functions.php中,并停用/重新激活我的主题。但是你可以把它放在别处,只要它在某个时刻被称为一次(所以可能不是'init')
add_action('switch_theme', 'mytheme_setup_options');
function mytheme_setup_options () {
flush_rewrite_rules();
}