有没有办法从所有Wordpress的RSS Feed(默认的一个以及标签,类别和搜索Feed)中排除帖子?
答案 0 :(得分:6)
假设您不想使用THIS ONE或THIS等插件,您可以采用多种方式:
一种是为您要排除的帖子指定一个类别,然后您可以像这样更改RSS链接的URL:
http://www.mydomain.com/feed?cat=-x,-y,-z
您还可以使用函数FILTER:
function o99_my_rss_filter($query) {
if ($query->is_feed) {
$query->set('cat','-7'); //Put category ID - here it is : 7
}
return $query;
}
add_filter('pre_get_posts','o99_my_rss_filter');
关键是您需要指定SOMETHING(标记,自定义字段,类别)来标识要排除的内容,假设您不希望始终添加要从查询中排除的ID。
最简单的是如上所示的类别。
* * 编辑I **
只是为了它 - (我仍然推荐cetegory方法)r 即使我不喜欢过度使用自定义字段 - 这是另一种通过分配自定义字段来更改查询的方法:
function o99_my_rss_filter_by _field( $where, $wp_query = NULL ) {
global $wpdb;
if ( !$wp_query ) global $wp_query;if ( $wp_query->is_feed ) {
$posts = get_posts( array( 'meta_key' => 'norss' ) );
if ( $posts ) {
foreach( $posts as $post ) {
$exclude .= $post->ID . ',';
}
}
$exclude = substr( $exclude,0, strlen( $exclude )-1 );
$where .= ' AND $wpdb->posts.ID NOT IN ( ' . $exclude . ')';
}
return $where;
}
add_filter( 'posts_where', 'o99_my_rss_filter_by _field', 1, 4 );