it-swarm.com.de

Holen Sie sich den Beitrag Typ A Taxonomie ist beigefügt

Ist es möglich, mit einer Taxonomie oder einem Begriff alle Beitragstypen zu ermitteln, denen die Taxonomie zugeordnet ist?

Wenn Sie beispielsweise die eingebaute Taxonomie category kennen oder einen Begriff in der Taxonomie category haben, können Sie dann rückentwickeln, ob category eine Taxonomie von post ist.

Nicht benötigte Info

Ich arbeite mit einigen benutzerdefinierten Feldern in taxonomischen Begriffen, die speziell den Beitragstyp kennen müssen, aber wenn der Beitragstyp-Parameter in der URL aus irgendeinem Grund nicht vorhanden ist, treten Probleme auf.

10
Howdy_McGee

Wenn wir in die globale Variable $wp_taxonomies blicken, sehen wir die zugehörigen Objekttypen.

Es gibt möglicherweise bessere Möglichkeiten, dies oder sogar Kernfunktionen zu tun, aber Sie können Folgendes versuchen:

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

dann erhalten Sie für das Standard-Setup:

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

mit der Ausgabe:

Array
(
    [0] => post
)
11
birgire

Sie können das Gegenteil mit get_object_taxonomies tun. Kombinieren Sie es mit get_post_types , um über Beitragstypen zu iterieren und die für jeden registrierten Taxonomien zu überprüfen.

EDIT- Hier ist ein Beispiel, das die gleiche Ausgabe wie die Funktion von @ birgire erzeugt, ohne schmutzige Globale zu verwenden.

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

Es ist nicht erforderlich, die globale Variable $wp_taxonomies direkt zu verwenden, da WordPress die Funktion get_taxonomy() hat, um auf Taxonomien zuzugreifen (im Core seit Version 2.3.0). Seit WordPress 4.7.0 ist der Rückgabetyp ein WP_Taxonomy Objekt mit der Eigenschaft $object_type

$taxonomy = get_taxonomy( 'category' );
print_r( $taxonomy->object_type );
2
JHoffmann