2012-09-22 13 views
5

Come posso ottenere un ID di tassonomia o un nome con solo la lumaca di tassonomia?Wordpress ottiene il nome di tassonomia con slug

Suppongo che sto cercando l'equivalente di get_term_by() ma per le tassonomie.

Modifica: devo specificare che sto cercando di ottenere l'ID fiscale di un attributo di prodotto WooCommerce.

Grazie

risposta

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

questo non risponde alla domanda. Troverà solo il nome di un termine, non una tassonomia. – David

2

come la risposta accettata non risponde alla domanda, mi forniscono una risposta qui, anche se la questione è molto vecchio.

Il terzo argomento (obbligatorio) su get_term_by() è il nome della tassonomia stessa e pertanto questa funzione non può essere utilizzata.

get_taxonomies() non può essere utilizzato perché si dovrebbe corrispondere all'intero array di riscrittura, a cui probabilmente non si ha accesso.

Quindi l'unico modo che ho trovato è stato quello di utilizzare la matrice privata $wp_taxonomies:

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

Spero davvero Wordpress fornirà un modo per farlo senza accedere le loro strutture dati interne.

7

WordPress fornisce una funzione per ottenere le informazioni sulla tassonomia dal suo slug.

$taxonomy_details = get_taxonomy($slug); 

Ciò restituirà i dettagli tassonomia come un oggetto, che comprende le varie etichette per la tassonomia. Ad esempio, ecco l'oggetto restituito quando chiamato per la tassonomia di categoria standard, ad es. 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 
) 

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

+0

La lumaca non è uguale al nome della tassonomia. Il tuo esempio funziona solo perché sono uguali in questo caso particolare. get_taxonomy accetta un nome di tassonomia, non una lumaca. – Hjalmar

+0

@Hjalmar Penso che il poster originale si riferisse a tassonomia-> nome come slug e tassonomia-> etichetta come nome. Sto affrontando lo stesso problema con gli attributi WC. – 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 
         ), 
        ) 
       ); 

come abbiamo recuperare questo con wp query di selezione

Problemi correlati