web-dev-qa-db-de.com

Entfernen Sie eine bestimmte Kategorie-ID aus dem zugehörigen Beitrag

Ich habe jetzt 3 Kategorien (Musik, Song, Jpop) und möchte Song- und Jpop-Kategorien aus verwandten Beiträgen entfernen.

Wie kann ich es tun ?

if ( get_theme_mod(‘related-posts-on’, true) ) :

    // Get the taxonomy terms of the current page for the specified taxonomy.
    $terms = wp_get_post_terms( get_the_ID(), ‘category’, array( ‘fields’ => ‘ids’ ) );

    // Bail if the term empty.
    if ( empty( $terms ) ) {
        return;
    }

    // Posts query arguments.
    $query = array(
        ‘post__not_in’ => array( get_the_ID() ),
        ‘tax_query’ => array(
            array(
                ‘taxonomy’ => ‘category’,
                ‘field’ => ‘id’,
                ‘terms’ => $terms,
                ‘operator’ => ‘IN’
            )
        ),
        ‘posts_per_page’ => 6,
        ‘post_type’ => ‘post’,
    );
1
Taka

nachsehen unter https://developer.wordpress.org/reference/functions/wp_get_post_terms/

und https://developer.wordpress.org/reference/classes/wp_term_query/__construct/ für entsprechende Parameter, d. h. den Parameter 'exclude'

und https://developer.wordpress.org/reference/functions/get_category_by_slug/ , um die Kategorie-IDs aus ihren Slugs abzurufen.

es könnte funktionieren, wenn Sie diese Zeile in Ihrem Code ersetzen:

// Get the taxonomy terms of the current page for the specified taxonomy. 
$terms = wp_get_post_terms( get_the_ID(), ‘category’, array( ‘fields’ => ‘ids’ ) );

mit diesem Beispielcode:

// Get the catogory ids of the two categories to be excluded
$cat1 = get_category_by_slug( 'song' ); 
$cat2 = get_category_by_slug( 'jpop' ); 
// Get the taxonomy terms of the current page for the specified taxonomy and exclude two categories
$terms = wp_get_post_terms( get_the_ID(), ‘category’, array( 'exclude' => array( $cat1->term_id, $cat2->term_id ), ‘fields’ => ‘ids’ ) );
1
Michael