我今天遇到了这个问题。我不知道这是否是最好的方法,但下面是我如何解决它的has_archive
当然,仍设置为true):
// First we remove WP default feed actions
// If we stop here, feeds would be disabled altogether
remove_action(\'do_feed_rdf\', \'do_feed_rdf\', 10, 1);
remove_action(\'do_feed_rss\', \'do_feed_rss\', 10, 1);
remove_action(\'do_feed_rss2\', \'do_feed_rss2\', 10, 1);
remove_action(\'do_feed_atom\', \'do_feed_atom\', 10, 1);
// Now we add our own actions, which point to our own feed function
add_action(\'do_feed_rdf\', \'my_do_feed\', 10, 1);
add_action(\'do_feed_rss\', \'my_do_feed\', 10, 1);
add_action(\'do_feed_rss2\', \'my_do_feed\', 10, 1);
add_action(\'do_feed_atom\', \'my_do_feed\', 10, 1);
// Finally, we do the post type check, and generate feeds conditionally
function my_do_feed() {
global $wp_query;
$no_feed = array(\'cpt_1\', \'cpt_2\');
if(in_array($wp_query->query_vars[\'post_type\'], $no_feed)) {
wp_die(__(\'This is not a valid feed address.\', \'textdomain\'));
}
else {
do_feed_rss2($wp_query->is_comment_feed);
}
}
请注意,这将导致所有提要在生成时都生成为RSS 2.0,但您可以大致了解。