web-dev-qa-db-fra.com

Supprimer un identifiant de catégorie spécifique d'un article lié

J'ai 3 catégories (musique, chanson, jpop) maintenant et je veux supprimer les catégories de chansons et jpop des articles liés.

Comment puis-je le faire ?

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

en regardant https://developer.wordpress.org/reference/functions/wp_get_post_terms/

et https://developer.wordpress.org/reference/classes/wp_term_query/__construct/ pour les paramètres correspondants, c'est-à-dire le paramètre 'exclude'

et https://developer.wordpress.org/reference/functions/get_category_by_slug/ pour obtenir les identifiants de catégorie de leurs slug.

cela peut fonctionner lorsque vous remplacez cette ligne dans votre code:

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

avec cet exemple de code:

// 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