我真的很头疼,不知道该怎么办。基本上,我正在建立一个带有“慈善机构”自定义帖子类型的网站。列出了许多慈善机构,我们将以RSPB为例。
因此,访问“example.com/charities/rspb”将加载自定义的帖子类型,这很好。我要做的是传递一个变量来更改页面内容:
实例com/慈善机构/rspb/联系人/
如果传递此URL,我希望“contacts”的查询变量为true,或者类似地:
实例com/慈善机构/rspb/捐赠信息/
。。。如果传递了此URL,则将“捐赠信息”的查询变量设置为true,等等。
我已尝试采用此解决方案:Passing variables through permalink structure
没有运气。它可以在“charities”页面上运行(该页面可以很好地加载archive-charities.php模板文件,并可以向其传递变量),但我无法获得任何将变量传递给自定义帖子本身的工作。
另外,我正在Apache2服务器(ubuntu)上运行WP 3.7。任何想法或建议都会很好。我花了相当多的时间研究这个和permalink结构,但我仍然不知道如何让它在我的场景中工作。提前感谢您的帮助。
**编辑-这是我的代码!(谢谢你的提醒!)**
// Register the variables that will be used as parameters on the url
function add_my_var($public_query_vars) {
array_push($public_query_vars[], \'contacts\', \'donation-info\', \'comments\');
return $public_query_vars;
}
add_filter(\'query_vars\', \'add_my_var\');
function do_rewrite() {
foreach (array(\'contacts\', \'donation-info\', \'comments\') as $item) {
add_rewrite_rule(\'(charities)/[/]?([^/]*)$\', \'index.php?pagename=charities&\'.$item.\'=$matches[2]\',\'top\');
}
}
add_action(\'init\', \'do_rewrite\');
// ...Get the query vars on template file
get_query_var(\'contacts\');
最合适的回答,由SO网友:Milo 整理而成
我在重写规则中立即看到的一个问题是这一部分:
index.php?pagename=charities
您没有名为“charities”的页面,您有一个自定义的帖子类型,因此应该是:
index.php?charities=$matches[1]
假设您的自定义post类型查询变量为
charities
.
不过,也就是说,我不会为此添加重写规则,如果您使用add_rewrite_endpoint
而是:
add_rewrite_endpoint( \'contacts\', EP_PERMALINK );
add_rewrite_endpoint( \'donation-info\', EP_PERMALINK );
add_rewrite_endpoint( \'comments\', EP_PERMALINK );
添加这些内容并刷新重写后,您将能够检查
contacts
,
donation-info
, 和
comments
数组键存在于
$wp_query->query_vars
.