我正在使用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?
使用这种方法的原因我必须为父帖子显示所有子帖子。
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
已经是查询变量,无需再次添加。