2013-02-27 15 views
8

Używam tego kawałek kodu:Wordpress: Pokaż tylko kategorię najwyższego poziomu

$args = array(
    'orderby' => 'name', 
    'hierarchical' => 1, 
    'style' => 'none', 
    'taxonomy' => 'category', 
    'hide_empty' => 0, 
    'depth' => 1, 
    'title_li' => '' 
); 

$categories = get_categories($args); 

Co staram się zrobić, to wymienić tylko kategorie najwyższego poziomu. Kiedy używam tego kodu, otrzymuję wszystkie z nich nie tylko na poziomie pierwszym. Czy ktoś może mi pomóc?

+1

nie ma argumentu głębokość get_categories() -http: //codex.wordpress.org/Function_Reference/get_categories argument głębokość jest stosowany w wp_list_categories() - http://codex.wordpress.org/Template_Tags/wp_list_categories – McNab

Odpowiedz

22

Nie ma depth argument za get_categories(), należy spróbować:

$args = array(
    'orderby' => 'name', 
    'parent' => 0 
); 

parent: (całkowita) tylko wskazanie kategorii, które są bezpośrednimi potomkami (tj dzieci tylko) kategorii zidentyfikowanych przez jego identyfikator. To NIE działa tak, jak parametr "child_of". Nie ma wartości domyślnej dla tego parametru. [W 2.8.4]

Więcej: http://codex.wordpress.org/Function_Reference/get_categories#Get_only_top_level_categories

+0

Jak wyświetlić tylko jedną podkategorię poziomu? na przykład: chcę ukryć podkategorię kategorii podrzędnych pierwszego stopnia –

+0

Dzięki soju, to wielka pomoc :) – Max

2

soju post jest bardzo pomocne, aby uzyskać dla kategorii tylko 1 poziom podkategorii powinniśmy po prostu przekazać id kategorii, która ma podkategorii. Ale jeśli podkategorii nie mają żadnego stanowiska to doesnot pokazy ale podkategorii podkategorii składać post więc dodać „hide_empty” => 0, w powyższym stanie będzie wyglądać

$args = array(
'taxonomy' => 'categories', 
'parent' => 7, 
'hide_empty' => 0, 
); 
0

Oto mój skrypt, aby uzyskać najwyższy poziom nazwy kategorii z pętli. Obejmuje to kategorie najwyższego poziomu, które mają kategorię podrzędną, i nie są sprawdzane osobno.

<?php 
    $categories = get_the_category(); 
    $topcats = array(); 
    foreach ($categories as $cat) { 
     if ($cat->parent != 0) $cat = get_term($cat->parent, 'category'); 
     $topcats[$cat->term_id] = '<a href="/category/' . $cat->slug . '">' . $cat->name . '</a>'; 
    } 
    echo implode(', ', $topcats); 
?> 
Powiązane problemy