如何从Wordpress RSS提要中排除某些帖子?

Art*_*kii 2 wordpress rss post feed

有没有办法从所有Wordpress的RSS源(默认的一个以及标签,类别和搜索源)中排除帖子?

Obm*_*nen 6

假设你不想使用像插件这一个,你有很多方法:

一种是为您要排除的帖子指定一个类别,然后您可以像这样更改RSS链接的URL:

http://www.mydomain.com/feed?cat=-x,-y,-z
Run Code Online (Sandbox Code Playgroud)

您还可以使用函数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');
Run Code Online (Sandbox Code Playgroud)

关键是您需要指定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 );
Run Code Online (Sandbox Code Playgroud)