好的,让我们首先对适当的查询变量进行一些明确的说明。
提到Post and Page parameters 在WP_Query
法典第页。
名称(字符串)-使用post slug。
pagename(字符串)-使用页段塞。
我们可以通过WP_Query
:
$args = array(
\'name\' => \'mypage\'
);
$mypage = new WP_Query( $args );
echo \'<pre>\';
print_r( $mypage );
echo \'</pre>\';
这将产生:
SELECT wp_posts.*
FROM wp_posts
WHERE 1=1
AND wp_posts.post_name = \'mypage\'
AND wp_posts.post_type = \'post\'
ORDER BY wp_posts.post_date DESC
它正在寻找
mypage
在
post
岗位类型。如果我们将此更改为
pagename
, 它看起来像
page
岗位类型。
它对主查询起作用的原因name
是由于redirect_guess_404_permalink
函数,该函数在原始请求为404时生效。它运行另一个查询来查找最近的匹配项,如果找到了什么,则重定向到那里。这也会导致从URL中删除任何额外的参数。
分层帖子类型需要注意的一点是,如果您的页面是另一个页面的子页面,则必须设置pagename
使用parent/child
路径,因为不同的父母可以有相同鼻涕虫的孩子。
对于您的问题,将查询变量更改为pagename
使用v4中的原始代码。7.2和216主题:
function wpd_mypage_rewrite() {
add_rewrite_tag(
\'%mycustomvar%\',
\'([^/]+)\'
);
add_rewrite_rule(
\'^mypage/([^/]+)/?\',
\'index.php?pagename=mypage&mycustomvar=$matches[1]\',
\'top\'
);
}
add_action( \'init\', \'wpd_mypage_rewrite\' );
注意,我使用
add_rewrite_tag
在这里您可以使用
query_vars
filter. 原因
add_rewrite_tag
其工作原理是通过相同的过滤器在内部添加查询变量。
别忘了flush rewrite rules 添加/更改规则后。您也可以通过访问设置来执行此操作>;永久链接页面。
那么你可以echo get_query_var( \'mycustomvar\' );
并输出值。