Функцията на WordPress wp_list_categories ще върне списък с всички категории. Ако зададете йерархичния флаг на true, ще получите цялата йерархия. Прочетете статията от кодекса във връзката по-горе за подробности.
Има и функция get_categories, която връща неформатиран резултат. Можете да използвате това във вашия собствен PHP код.
Трети избор е да прочетете базата данни, има три таблици wp_terms, wp_term_taxonomy и wp_term_relationships, които съдържат дървото на категориите. Ето структурата на базата данни.
Редактиране: Ето кратък код, който ще създаде подобен списък като вложена колекция от списъци:
function show_categories($atts, $content) {
extract( shortcode_atts( array('taxonomy' => 'category'), $atts ) );
$cats = get_categories(array('taxonomy' => $taxonomy,'hide_empty' => 0, 'hierarchical' => 0, 'parent' => 0));
return show_categories_level($cats, '', '', $taxonomy);
}
function show_categories_level($cats, $names, $ids,$taxonomy) {
$res = '<ul>';
foreach ($cats as $cat) {
if($names)$n = "$names, $cat->name"; else $n = $cat->name;
if($ids)$i = "$ids, $cat->term_id"; else $i = $cat->term_id;
$res = $res."<li>$n : $i</li>";
$kittens = get_categories(array('taxonomy' => $taxonomy,'hide_empty' => 0, 'hierarchical' => 0, 'parent' =>$cat->term_id));
if($kittens) {
$res .= ("<li>".show_categories_level($kittens, $n, $i, $taxonomy)."</li>");
}
}
return $res."</ul>";
}
add_shortcode('show-categories', 'show_categories');
За да използвате това, добавете този код към вашия functions.php и добавете краткия код, където искате да се показва:
<h2>Default Categories</h2>
[show-categories]
или можете да посочите таксономия, която искате да бъде включена в списъка
<h2>My Taxonomy Categories</h2>
[show-categories taxonomy="my_taxonomy"]
Това не е най-ефективният начин за постигане на този резултат, но тук работи. Ако сте започнали с йерархичната версия на get_categories или сте използвали базата данни, можете да получите по-бърза версия на това.
person
Peter Wooster
schedule
02.04.2013