Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从Wordpress RSS提要的自定义分类术语中排除帖子_Php_Wordpress_Rss_Feed - Fatal编程技术网

Php 如何从Wordpress RSS提要的自定义分类术语中排除帖子

Php 如何从Wordpress RSS提要的自定义分类术语中排除帖子,php,wordpress,rss,feed,Php,Wordpress,Rss,Feed,我正在寻找一种方法,从我的RSS提要中排除一个自定义分类术语中的所有帖子。我有一个称为“过滤器”的自定义分类法和该分类法中的一个称为“高级”的术语,我希望将其从我的RSS提要中排除 我已经在很多地方看到了如何从一个类别中的术语中排除帖子,但还没有找到如何从自定义分类法中的术语中排除帖子 function excludecatfeed($query) { if(is_feed()) { $query->set('cat

我正在寻找一种方法,从我的RSS提要中排除一个自定义分类术语中的所有帖子。我有一个称为“过滤器”的自定义分类法和该分类法中的一个称为“高级”的术语,我希望将其从我的RSS提要中排除

我已经在很多地方看到了如何从一个类别中的术语中排除帖子,但还没有找到如何从自定义分类法中的术语中排除帖子

function excludecatfeed($query) {
           if(is_feed()) {
                          $query->set('cat','-1');
                          return $query;
           }
}
add_filter('pre_get_posts', 'excludecatfeed');

这是我在搜索时一直发现的,但这是针对类别的,我希望做同样的事情,但要定制分类法。谢谢

我能够想出如何从我的wordpress提要中排除自定义分类法

add_filter('pre_get_posts','better_editions_archive');

function better_editions_archive( $query ) {

if ( $query->is_feed() ) {
    $query->set( 'post_type', array( 'post' ) );
    $query->set( 'tax_query', array(
        array(
            'taxonomy' => 'filter',
            'field' => 'slug',
            'terms' => 'premium',
            'operator' => 'NOT IN'
        )
    ) );
}

return $query;
}

在tax_查询中,您可以更改您想要将其调整为自定义分类的内容。我在这里做的是,我排除了我的自定义分类法中称为“过滤器”的所有帖子以及术语“高级”中的所有帖子。

您可以使用功能强大的钩子排除自定义分类法中带有术语的帖子

使用名为
filter
的自定义分类法示例和
premium
的术语slug,以下代码将从RSS提要中排除这些帖子:

add_action( 'pre_get_posts', function ( $query ) {
    if ( is_admin() || ! $query->is_main_query() ) {
        return;
    }

    // Exclude Terms by Slug from RSS Feed    
    if ( $query->is_feed() ) {
        $tax_query = array([
            'taxonomy' => 'filter',
            'field' => 'slug',
            'terms' => [ 'premium' ],
            'operator' => 'NOT IN',
        ]);

        $query->set( 'tax_query', $tax_query );
    }
}, 11, 1 );
如果您担心分类术语slug被更改,可以指定
术语\u id
,这可能是一个更安全的选择:

    $tax_query = array([
        'taxonomy' => 'filter',
        'field' => 'term_id',
        'terms' => [ '1234' ],
        'operator' => 'NOT IN',
    ]);
另外,如果您想排除自定义分类法中包含任何术语的所有帖子,可以使用以下选项:

    $taxonomy = 'filter';

    $terms = get_terms([
        'taxonomy' => $taxonomy,
        'fields' => 'ids',
    ]);

    $tax_query = array([
        'taxonomy' => $taxonomy,
        'field' => 'term_id',
        'terms' => (array) $terms,
        'operator' => 'NOT IN',
    ]);
请确保将此代码片段放在主题的
functions.php
文件中,因为它在WordPress生命周期的早期运行。尽情享受吧