从搜索结果和归档页面中排除自定义分类

时间:2018-03-27 作者:McFarnell

更新:我有以下代码工作。它从搜索结果中排除分类法。但是,我希望只有在用户未登录时才会发生这种情况。以下代码对登录和注销的用户生效。如何检查是否有人从功能登录。php文件?我试过了!\\u user\\u logged\\u()多次,但我似乎无法使其正常工作?谢谢你的帮助!

add_filter( \'pre_get_posts\', \'exclude_pages_search_when_logged_out\' );
function exclude_pages_search_when_logged_out($query) {
    if ( $query->is_search && !is_user_logged_in() ) {

      $tax_query = array([
            \'taxonomy\' => \'wpfc_service_type\',
            \'field\' => \'term_id\',
            \'terms\' => [ 505 ],
            \'operator\' => \'NOT IN\',
        ]);

        $query->set( \'tax_query\', $tax_query );

        }

    return $query;
} 
原始问题

I\'m trying to exclude the taxonomy \'wpfc_service_type\', term 505, from my search results and archive pages. I\'ve added the following to my functions.php file, but it doesn\'t seem to be working. What am I doing wrong?

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

        // Exclude Terms by ID from Search and Archive Listings
        if ( is_search() || is_tax( \'wpfc_service_type\' ) ) {    
            $tax_query = array([
                \'taxonomy\' => \'wpfc_service_type\',
                \'field\' => \'term_id\',
                \'terms\' => [ 505 ],
                \'operator\' => \'NOT IN\',
            ]);

            $query->set( \'tax_query\', $tax_query );
        }
    }, 11, 1 ); 

1 个回复
SO网友:AddWeb Solution Pvt Ltd

复制以下代码段并将其粘贴到主题的代码中,最好是在函数中。php文件:

    /* Exclude a Category from Search Results */

    add_filter( \'pre_get_posts\' , \'search_exc_cats\' );
    function search_exc_cats( $query ) {

    if( $query->is_admin )
    return $query;

    if( $query->is_search ) {
    $query->set( \'category__not_in\' , array( 30 ) ); // Cat ID
    }
    return $query;
    }

结束

相关推荐

Media searching ignored

我们的网站使用WordPress,有很多媒体文件。我们网站的媒体名称格式如下[Car brand\'s name]-[number].jpg, 例如Tesla-1.jpg 或Aston Martin-3.jpg. 因此,我们可以通过搜索文章的名称轻松找到文章的特定媒体。但突然间,我们找不到媒体。我们正在尝试搜索名称为的媒体,但搜索结果不变。(不搜索任何内容时的媒体屏幕)(搜索Aston Martin时的媒体屏幕)当然,在填充搜索文本框后,它会显示一个加载图标,但结果总是一样的。为什么会发生这种情况?更新+