Obtenir le type d'article Une taxonomie est attachée à

10

Étant donné qu'une taxonomie ou un terme est donné, est-il possible d'extraire n'importe quel type de message auquel la taxonomie est attachée?

Par exemple, connaissant la taxonomie intégrée category ou recevant un terme dans la taxonomie category , existe-t-il une fonction permettant de faire de l'ingénierie inverse que category est une taxonomie de post ?

Informations inutiles

Je travaille avec certains champs personnalisés en termes de taxonomie qui nécessitent spécifiquement de connaître le type de publication, mais si le paramètre de type de publication de l'URL n'existe pas, quelle que soit la raison du problème que je rencontre.

    
posée Howdy_McGee 18.12.2014 - 18:34

3 réponses

11

Si nous examinons la variable globale $wp_taxonomies , nous voyons les types d'objet associés.

Il existe peut-être de meilleures façons de faire cela, voire même des fonctions principales, mais vous pouvez essayer les solutions suivantes:

function wpse_172645_get_post_types_by_taxonomy( $tax = 'category' )
{
    global $wp_taxonomies;
    return ( isset( $wp_taxonomies[$tax] ) ) ? $wp_taxonomies[$tax]->object_type : array();
}

alors pour la configuration par défaut, vous obtenez:

$out = wpse_172645_get_post_types_by_taxonomy( 'category' );
print_r( $out );

avec la sortie:

Array
(
    [0] => post
)
    
réponse donnée birgire 18.12.2014 - 19:03
7

Vous pouvez faire l'inverse avec get_object_taxonomies . Combinez-le avec get_post_types pour parcourir les types de publication afin de vérifier les taxonomies enregistrées pour chacun.

MODIFIER : voici un exemple produisant le même résultat que la fonction de @ birgire, sans utiliser de globales modifiés.

function wpse_172645_get_post_types_by_taxonomy( $tax = 'category' ){
    $out = array();
    $post_types = get_post_types();
    foreach( $post_types as $post_type ){
        $taxonomies = get_object_taxonomies( $post_type );
        if( in_array( $tax, $taxonomies ) ){
            $out[] = $post_type;
        }
    }
    return $out;
}
    
réponse donnée Milo 18.12.2014 - 19:01
1

Il n'est pas nécessaire d'utiliser la variable globale $wp_taxonomies directement, car WordPress dispose du get_taxonomy() . fonction pour accéder aux taxonomies qu'il contient (en version depuis la version 2.3.0). Depuis WordPress 4.7.0, le type de retour est un objet WP_Taxonomy avec la propriété $object_type

$taxonomy = get_taxonomy( 'category' );
print_r( $taxonomy->object_type );
    
réponse donnée JHoffmann 08.10.2018 - 22:47

Lire d'autres questions sur les étiquettes