2012-09-22 20 views
5

Wie kann ich eine Taxonomie-ID oder einen Namen mit nur der Taxonomie Slug bekommen?Wordpress get Taxonomie Name mit Slug

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

Edit: Ich muss angeben, dass ich versuche, die Steuernummer eines WooCommerce-Produktattributs zu erhalten.

Dank

Antwort

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

Dies schließt nicht die Frage beantworten. Es wird nur der Name eines Begriffs und keine Taxonomie gefunden. – David

2

Da die akzeptierte Antwort, nicht die Frage beantworten, stelle ich hier eine Antwort, obwohl die Frage ist sehr alt.

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

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

So ist der einzige Weg, ich fand, war die private Array verwenden $wp_taxonomies:

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

ich einen Weg wirklich liefert Wordpress hoffen, dies zu tun, ohne ihre internen Datenstrukturen zugreifen.

7

WordPress stellt eine Funktion zur Verfügung, um die Taxonomieinformationen aus seinem Slug zu erhalten.

Dies wird die Taxonomiedetails als ein Objekt zurückgeben, das die verschiedenen Beschriftungen für die Taxonomie enthält. Zum Beispiel ist hier das zurückgegebene Objekt, wenn es für die Standardtaxonomie der Kategorie 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 
     ) 

    [description] => 
    [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

+0

Der Slug ist nicht derselbe wie der Name der Taxonomie. Ihr Beispiel funktioniert nur, weil sie in diesem speziellen Fall gleich sind. get_taxonomy verwendet einen Taxonomennamen, keinen Slug. – Hjalmar

+0

@Hjalmar Ich glaube, das ursprüngliche Poster bezog sich auf Taxonomie-> Name als Slug und Taxonomie-> Label als Name. Ich stehe vor demselben Problem wie er mit WC-Attributen. – David

0
$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 diese Auswahlabfrage mit wp holen

Verwandte Themen