2013-02-27 8 views
8

Sto usando questo pezzo di codice:Wordpress: Mostra solo le categorie di livello superiore

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

$categories = get_categories($args); 

Quello che sto cercando di fare è quello di elencare solo le categorie di livello superiore. Quando sto usando questo codice, sto ricevendo tutti loro non solo al primo livello. Qualcuno può aiutarmi?

+1

Non c'è argomento di profondità per get_categories() -http: //codex.wordpress.org/Function_Reference/get_categories l'argomento di profondità è usato in wp_list_categories() - http://codex.wordpress.org/Template_Tags/wp_list_categories – McNab

risposta

22

Non c'è depth argomento per get_categories(), si dovrebbe provare:

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

parent: (intero) Mostra solo le categorie che sono discendenti diretti (cioè bambini) della categoria identificato da il suo ID. Questo NON funziona come il parametro "child_of". Non esiste un valore predefinito per questo parametro. [In 2.8.4]

Per saperne di più: http://codex.wordpress.org/Function_Reference/get_categories#Get_only_top_level_categories

+0

Come visualizzare solo una sottocategoria di livello? per es .: voglio nascondere le categorie secondarie della sottocategoria di primo livello –

+0

Grazie soju, è di grande aiuto :) – Max

2

soju post è molto utile, per ottenere categoria solo sottocategoria 1 livello dovremmo semplicemente passare l'ID categoria che ha sottocategorie. Ma se la sottocategoria non ha alcun posto allora doesnot spettacoli ma sottocategoria della sottocategoria costituito il palo in modo da aggiungere 'hide_empty' => 0, nella condizione sopra di essa sarà simile a

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

Ecco il mio script per ottenere il livello superiore nomi di categorie all'interno del ciclo. Ciò includerà le categorie di livello superiore che hanno appena selezionato una categoria figlio e non sono state verificate esplicitamente.

<?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); 
?> 
Problemi correlati