web-dev-qa-db-fra.com

Est-il possible de filtrer les résultats contenant certaines balises lorsqu’on utilise get_categories ou similaire?

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!

2
anonymous coward

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 );
}
3
TheDeadMedic

Voir le plugin Query Multiple Taxonomies pour une idée.

0
scribu