我使用以下方法将$\\u GET变量添加到wordpress中的自定义帖子类型中。
add_filter(\'query_vars\', \'add_type2_var\', 0, 1);
function add_type2_var($vars){ $vars[] = \'type2\'; return $vars; }
add_rewrite_rule(\'/?c/(.[^/])/(.[^/])/(.*)$\',"/c/$1/$2?type2=$3",\'top\');
我的自定义帖子类型是非层次帖子。这些帖子的链接可以正常工作,但当我尝试在斜杠后的末尾添加一些内容时,链接就停止工作了。
如果我添加show
在…的结尾http://127.0.0.1/wp/c/default/dd
http://127.0.0.1/wp/c/default/dd/show
该链接显示404错误。虽然当我在末尾加上数字时效果很好http://127.0.0.1/wp/c/default/dd/123456
我还可以得到123456
使用$_GET
在php中。
我不确定问题出在哪里,但我猜测wordpress在我的函数之前给出了404错误。我有一个函数使用single_template
滤器
UPDATE:
我在“template\\u redirect”中添加了一个函数。
function CPTTest()
{
if ( is_singular(\'cpt\') )
{
echo \'cpt\';
}
elseif ( is_singular() ) {
echo \'post\';
}
else
{
echo \'none\';
}
var_dump($_GET);
die();
}
当我使用url时,这可以很好地工作
http://127.0.0.1/wp/c/default/dd/show
. 唯一的问题是它不承认它是cpt帖子。但它确实认识到
http://127.0.0.1/wp/c/default/dd/123456
作为cpt职位。使用时的结果相同
wp
操作而不是
template_redirect
.
最合适的回答,由SO网友:Milo 整理而成
数字之所以有效,是因为单个帖子可以分页,并且有一个重写规则来支持这一点。
如果要在永久链接后添加其他参数,请添加rewrite endpoint.
add_rewrite_endpoint( \'show\', EP_PERMALINK );
编辑-这里有一个内部重写示例,假设您的自定义post类型slug是
type1
:
add_rewrite_rule(
\'c/([^/]+)/([^/]+)/([^/]+)/?$\',
\'index.php?type1=$matches[1]&type2=$matches[3]\',
\'top\'
);