Ottieni il tipo di posta a cui è allegata una tassonomia


13

Dato una tassonomia o un termine, è possibile estrarre qualsiasi / tutti i tipi di posta a cui è collegata la tassonomia?

Ad esempio, conoscendo la tassonomia integrata categoryo ricevendo un termine nella categorytassonomia, esiste una funzione per decodificare che categoryè una tassonomia di post?

Informazioni non necessarie

Sto lavorando con alcuni campi personalizzati in termini di tassonomia che in particolare hanno bisogno di conoscere il tipo di post, ma se il parametro del tipo di post nell'URL non è presente per qualsiasi motivo, ho dei problemi.

Risposte:


12

Se guardiamo nella $wp_taxonomiesvariabile globale vediamo i tipi di oggetti associati.

Potrebbero esserci modi migliori per eseguire questa o anche le funzioni principali, ma puoi provare quanto segue:

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

quindi per l'impostazione predefinita ottieni:

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

con l'output:

Array
(
    [0] => post
)

8

Puoi fare il contrario con get_object_taxonomies. Combinalo con get_post_typesper scorrere i tipi di posta per verificare le tassonomie registrate per ciascuno.

EDIT - Ecco un esempio che produce lo stesso output della funzione di @ birgire, senza usare i globali sporchi.

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;
}

3

Non è necessario utilizzare $wp_taxonomiesdirettamente la variabile globale poiché WordPress ha la get_taxonomy()funzione di accedere alle tassonomie al suo interno (in sostanza dalla versione 2.3.0). Da WordPress 4.7.0 il tipo restituito è un WP_Taxonomyoggetto con la proprietà$object_type

$taxonomy = get_taxonomy( 'category' );
print_r( $taxonomy->object_type );
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.