查看register_post_type()
函数,似乎WordPress使用isset()
检查源参数,而不是empty()
, 意味着false
值将返回true
. 要解决此问题,可以尝试设置\'feeds\' => null
然后从设置>永久链接中刷新重写规则(记住重复两次,以克服一个奇怪的怪癖)。
或者,您可以在任何其他页面(包括提要)有机会加载之前关闭它。。。
do_action(\'wp\',\'kill_feeds\',-1);
function kill_feeds(){
if ( is_feed( array(\'post\',\'my-custom-type\') ) ) {
exit;
}
}
这应该做的是检测当前请求是否是feed(您指定的特定post类型),如果是,则停止任何进一步的输出。
如果你真的想发疯,你可以重定向到你的网站404页。:-)
最后,如果所有这些都失败了,您可以手动修改重写规则。这个rewrite_rules_array 过滤器公开整个重写规则数组,您可以使用一些regex魔术来删除任何适用的提要规则。假设你的帖子是“foo”,这可能看起来像。。。
add_filter(\'rewrite_rules_array\', \'kill_feed_rewrites\');
function kill_feed_rewrites($rules){
foreach ($rules as $rule => $rewrite) {
if ( preg_match(\'/^foo.*(feed)/\',$rule) ) {
unset($rules[$rule]);
}
}
return $rules;
}
Feed引用,规则本身看起来像这样。。。
\'foo/[^/]+/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\' => string \'index.php?attachment=$matches[1]&feed=$matches[2]\'