Exclude custom taxonomy from search results and archive pages

Question

UPDATE:
I have the following code working. It excludes the taxonomy from the search results. However, I would like this only to happen if a user is not logged in. The code below is taking effect for logged in and logged out users. How can I check if someone is logged in from the functions.php file? I’ve tried !is_user_logged_in() many times, and I can’t seem to get it to work? Thanks for any help!

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;
} 

ORIGINAL QUESTION

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 ); 
0
, McFarnell 2 years 2020-08-23T21:10:26-05:00 0 Answers 45 views 0

Leave an answer

Browse
Browse