2013-02-27 13 views
8

Ich bin mit diesem Stück Code:Wordpress: Nur die Kategorien der obersten Ebene

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

$categories = get_categories($args); 

Was ich versuche nur Top-Level-Kategorien zu tun ist, aufzulisten. Wenn ich diesen Code verwende, bekomme ich alle, nicht nur die erste Ebene. Kann mir jemand helfen?

+1

Es gibt keine Tiefe Argument für get_categories() -http: //codex.wordpress.org/Function_Reference/get_categories die Tiefe Argument wird in wp_list_categories verwendet() - http://codex.wordpress.org/Template_Tags/wp_list_categories – McNab

Antwort

22

Es gibt keine depth Argument für get_categories(), sollten Sie versuchen:

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

parent: (integer) Anzeige nur Kategorien, die direkte Nachkommen sind (dh nur für Kinder) der identifizierten Kategorie von seine ID. Dies funktioniert NICHT wie der Parameter 'child_of'. Für diesen Parameter gibt es keine Standardeinstellung. [In 2.8.4]

Lesen Sie mehr: http://codex.wordpress.org/Function_Reference/get_categories#Get_only_top_level_categories

+0

Wie wird nur eine Unterkategorie angezeigt? für zB: ich will Kind Kategorien von der ersten Ebene der Subkategorie –

+0

Dank Soju, es ist eine große Hilfe verbergen :) – Max

2

Soju Beitrag ist sehr hilfreich, für die Kategorie nur 1 Stufe Unterkategorie bekommen sollten wir einfach die Kategorie-ID übergeben, die Unterkategorien hat. Aber wenn die Untergruppe haben dann keine jede mögliche Post doesnot es zeigt aber Subkategorie Subkategorie bestehen die Pfosten so hinzufügen ‚hide_empty‘ => 0, in der obigen Bedingung wird es aussehen wie

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

Hier mein Skript ist Top-Level zu erreichen Kategorienamen innerhalb der Schleife. Dies umfasst Top-Level-Kategorien, bei denen nur eine untergeordnete Kategorie aktiviert ist und die nicht explizit überprüft werden.

<?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); 
?> 
Verwandte Themen