WordPress erhält den Taxonomienamen mit Slug

Lesezeit: 3 Minuten

Benutzeravatar von Sebastien
Sebastian

Wie kann ich eine Taxonomie-ID oder einen Namen nur mit dem Taxonomie-Slug erhalten?

Ich schätze, ich suche nach dem Äquivalent von get_term_by() aber für Taxonomien.

Bearbeiten: Ich muss angeben, dass ich versuche, die Steuer-ID eines WooCommerce-Produktattributs zu erhalten.

Vielen Dank

WordPress bietet eine Funktion zum Abrufen der Taxonomieinformationen aus seinem Slug.

$taxonomy_details = get_taxonomy( $slug );

Dadurch werden die Taxonomiedetails als Objekt zurückgegeben, das die verschiedenen Bezeichnungen für die Taxonomie enthält. Hier ist zum Beispiel das zurückgegebene Objekt, wenn es für die Standard-Kategorie-Taxonomie aufgerufen wird, z get_taxonomy( 'category' );

stdClass Object
(
    [labels] => stdClass Object
        (
            [name] => Categories
            [singular_name] => Category
            [search_items] => Search Categories
            [popular_items] => 
            [all_items] => All Categories
            [parent_item] => Parent Category
            [parent_item_colon] => Parent Category:
            [edit_item] => Edit Category
            [view_item] => View Category
            [update_item] => Update Category
            [add_new_item] => Add New Category
            [new_item_name] => New Category Name
            [separate_items_with_commas] => 
            [add_or_remove_items] => 
            [choose_from_most_used] => 
            [not_found] => No categories found.
            [menu_name] => Categories
            [name_admin_bar] => category
        )

    WordPress get taxonomy name with slug => 
    [public] => 1
    [hierarchical] => 1
    [show_ui] => 1
    [show_in_menu] => 1
    [show_in_nav_menus] => 1
    [show_tagcloud] => 1
    [show_in_quick_edit] => 1
    [show_admin_column] => 1
    [meta_box_cb] => post_categories_meta_box
    [rewrite] => Array
        (
            [hierarchical] => 1
            [slug] => category
            [with_front] => 1
            [ep_mask] => 512
        )

    [query_var] => category_name
    [update_count_callback] => 
    [_builtin] => 1
    [cap] => stdClass Object
        (
            [manage_terms] => manage_categories
            [edit_terms] => manage_categories
            [delete_terms] => manage_categories
            [assign_terms] => edit_posts
        )

    [name] => category
    [object_type] => Array
        (
            [0] => post
        )

    [label] => Categories
)

Quelle: https://codex.wordpress.org/Function_Reference/get_taxonomy

  • Die Schnecke ist nicht dasselbe wie der Name der Taxonomie. Ihr Beispiel funktioniert nur, weil sie in diesem speziellen Fall zufällig gleich sind. get_taxonomy nimmt einen Taxonomienamen an, keinen Slug.

    – Hjalmar

    15. Mai 2015 um 11:26 Uhr


  • @Hjalmar Ich denke, das ursprüngliche Poster bezog sich auf Taxonomie-> Name als Slug und Taxonomie-> Label als Name. Ich stehe vor dem gleichen Problem wie er mit WC-Attributen.

    – David

    3. Oktober 2015 um 11:50 Uhr

Da die akzeptierte Antwort die Frage nicht beantwortet, gebe ich hier eine Antwort, obwohl die Frage sehr alt ist.

Das dritte (erforderliche) Argument für get_term_by() ist der Name der Taxonomie selbst, daher kann diese Funktion nicht verwendet werden.

get_taxonomies() kann auch nicht verwendet werden, da Sie dann das gesamte Rewrite-Array abgleichen müssten, auf das Sie wahrscheinlich keinen Zugriff haben.

Die einzige Möglichkeit, die ich gefunden habe, war die Verwendung des privaten Arrays $wp_taxonomies:

function get_tax_name_from_slug($slug){
  foreach ($wp_taxonomies as $key => $value) {
    if ($value->rewrite['slug'] === $slug){
        return $key;
    }
  }
}

Ich hoffe wirklich, dass WordPress eine Möglichkeit bietet, dies zu tun, ohne auf ihre internen Datenstrukturen zuzugreifen.

$args = array(
                    'post_type' => 'awards',
                    'post_status' => 'publish',
                    'posts_per_page' => 4,
                     'orderby' => 'ID',
                     'order' => 'DESC',
                    'tax_query' => array(
                        'relation' => 'AND',
                        array(
                            'taxonomy' => 'awards_categories',
                            'field' => 'slug',
                            'terms' => $award_solution
                        ),
                        array(
                            'taxonomy' => 'year',
                            'field' => 'slug',
                            'terms' => $yearvalue
                        ),
                    )
                );

wie wir dies mit wp select query abrufen

<?php 
    $term = get_term_by('slug', $slug, 'category'); 
    $name = $term->name; 
    $id = $term->term_id;
?>

1394360cookie-checkWordPress erhält den Taxonomienamen mit Slug

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy