2012-09-22 17 views
5

Bir taksonomi kimliğini veya adını yalnızca taksonomi sümüklü nasıl alabilirim?Wordpress, sümüklü taksonomi ismini al

Sanırım get_term_by() eşdeğeri ama taksonomiler için.

Düzenleme: Bir WooCommerce ürün özniteliğinin vergi kimliğini almaya çalıştığımı belirtmem gerekir. Kabul cevap soruya cevap vermez gibi

Teşekkür

cevap

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

Bu soruya cevap vermez. Sadece bir terimin ismini bulacak, bir taksonomi değil. – David

2

, ben soru çok eski olmasına rağmen burada bir cevap sağlamaktadır.

Üçüncü (zorunlu) argümanı get_term_by(), taksonominin adıdır ve bu nedenle bu işlev kullanılamaz.

get_taxonomies() ya kullanılamaz çünkü o zaman muhtemelen erişiminiz olmayan tüm yeniden yazma dizisi ile eşleşmeniz gerekir.

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

Gerçekten Wordpress kendi iç veri yapılarını erişmeden bunu yapmanın bir yol sağlayacaktır umut:

Yani buldum tek yolu özel dizi $wp_taxonomies kullanmaktı.

7

WordPress, taksonomi bilgilerini sümükünden almak için bir işlev sağlar.

Bu, taksonomi ayrıntılarını, taksonomi için çeşitli etiketler içeren bir nesne olarak döndürecektir. Örneğin, standart Kategori taksonomisi için çağrıldığında döndürülen nesne, ör. 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 
) 

Kaynak: biz wp select sorgusu ile bu getirme nasıl https://codex.wordpress.org/Function_Reference/get_taxonomy

+0

Sülük, taksonominin adıyla aynı değildir. Örneğiniz sadece bu özel durumda eşit olmaları nedeniyle çalışır. get_taxonomy bir takson adı değil, bir taksonomi adını alır. – Hjalmar

+0

@Hjalmar Bence orijinal poster, taksonomi-> isminden bahsediyordu ve isim olarak taksonomi-> etiketini kullanıyordu. WC öznitelikleriyle aynı sorunla karşı karşıyayım. – 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 
         ), 
        ) 
       );