get_categories()
et les fonctions associées, par défaut, ne renvoient pas de catégories vides - catégories sans publication.
Je pensais qu'il était possible de filtrer cette liste pour inclure uniquement les catégories contenant elles-mêmes des messages. qui ont une certaine balise spécifique associée?
Ou existe-t-il une autre méthode assez simple pour obtenir cette information?
Par exemple, si j'avais des posts avec une balise "audio", j'aimerais un moyen d'utiliser get_categories()
(ou des résultats similaires) mais uniquement une liste de catégories contenant des posts avec cette balise "audio".
Je suis conscient que je devrai peut-être utiliser directement l'identifiant du tag. Je cherche simplement le "meilleur" moyen ou le moyen le plus approprié de le faire.
Merci!
Consultez ma réponse sur pour savoir comment obtenir des termes associés à d'autres personnes via les messages auxquels ils sont attachés .
Dans votre cas, vous pourriez le mettre en pratique comme tel;
$category_IDs = get_terms_soft_associated( 'category', array(
'taxonomy' => 'post_tag',
'field' => 'slug',
'terms' => 'audio'
) );
wp_list_categories( array( 'include' => $category_IDs ) );
Ou, pour une approche plus générale, utilisez une fonction;
/**
* List categories for posts that have $tag.
*
* @param string|int|object $tag Tag slug, ID or object
* @param string|array $args Args to pass to {@see wp_list_categories()}
* @return string
*/
function list_categories_with_tag( $tag, $args = '' )
{
if ( is_object( $tag ) )
$tag = ( int ) $tag->term_id;
$args = wp_parse_args( $args );
$args['include'] = get_terms_soft_associated( 'category', array(
'taxonomy' => 'post_tag',
'field' => is_numeric( $tag ) ? 'term_id' : 'slug',
'terms' => $tag
) );
return wp_list_categories( $args );
}
Voir le plugin Query Multiple Taxonomies pour une idée.