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’,
);
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’ ) );