如何在WordPress中刷新全局查询变量?

时间:2018-09-06 作者:hu7sy

我正在使用add\\u rewrite\\u rule()显示父帖子的子帖子。

add_action( \'init\', \'my_add_rewrite_rules\' );
function my_add_rewrite_rules() {
    add_rewrite_rule(\'^child/([^/]+)/?\',\'index.php?post_type=child&post_parent=$post_id\',\'top\');    
}

add_filter(\'query_vars\', \'foo_my_query_vars\');
function foo_my_query_vars($vars){
    $vars[] = \'post_parent\';
    return $vars;
}
上述代码工作正常,但在$post_id 不影响$var[\'post_parent\'].

每次更改全局变量时,我都必须单击permalink的保存按钮。

请指导我如何冲洗旧的$var[\'post_parent\'] varibale?

使用这种方法的原因我必须为父帖子显示所有子帖子。

1 个回复
SO网友:Tom J Nowell

问题在于您的重写规则:

add_action( \'init\', \'my_add_rewrite_rules\' );
function my_add_rewrite_rules() {
    add_rewrite_rule(\'^child/([^/]+)/?\',\'index.php?post_type=child&post_parent=$post_id\',\'top\');    
}
不是使用匹配的值,而是使用$post_id. 因为这不是双引号字符串$post_id 变量的值post_parent 将是字符串文字"$post_id", 但是post_parent 需要数字post ID

相反refer to the official documentation 它使用了这个示例,甚至还有一个更安全的正则表达式:

add_rewrite_rule(\'^leaf/([0-9]+)/?\', \'index.php?page_id=$matches[1]\', \'top\');
因此,不需要刷新值,因为没有要刷新的内容,这不是重写规则的工作方式。

最后post_parent 已经是查询变量,无需再次添加。

结束

相关推荐

Let me choose permalinks

我需要选择一个叫做“mysite”的永久链接。com/1418”,但wordpress不断在永久链接中添加“-2”。通常这意味着我已经有了一个名为“相同”的页面,它位于垃圾箱或其他地方。但这里的情况似乎并非如此。我尝试在设置中重置永久链接,这也没有帮助。我如何使用数字作为页面名称permalink,而不用wordpress在permalink中添加“-2”。