任何人都可以告诉我如何显示我的wordpress类别(父母和孩子)及其ID。 我希望他们以这种方式打印:
欧洲,英国,伦敦(欧洲是父母类别,他们的孩子是英国) 10,20,33(这些是他们的ids)
欧洲,法国,巴黎 10,22,45
欧洲,法国,嘎纳 10,22,49
我尝试了这段代码,但它对我不起作用:
<?php
$categories = get_the_category();
$this_cat_ID = $categories[0]->cat_ID;
$this_cat_name = $categories[0]->cat_name;
$this_cat_url = get_category_link($this_cat_ID);
// get the sub category if we have them
foreach ($categories as $cat) {
$parent = $cat->category_parent;
if ($parent != 0 ){
$sub_cat_ID = $cat->cat_ID;
$sub_cat_name = $cat->cat_name;
$sub_cat_url = get_category_link($sub_cat_ID);
}
}
if (!$sub_cat_ID) {
echo $this_cat_ID;
} else {
echo $sub_cat_ID;
}
?>
非常感谢您的帮助,谢谢
答案 0 :(得分:3)
WordPress功能wp_list_categories将返回所有类别的列表。如果将层次结构标志设置为true,则将获得整个层次结构。阅读上面链接中的codex文章了解详情。
还有一个get_categories function返回未格式化的结果。您可以在自己的PHP代码中使用它。
第三种选择是读取数据库,有三个表wp_terms,wp_term_taxonomy和wp_term_relationships包含类别树。这是the database structure。
编辑:这是一个短代码,它会生成一个类似于列表的嵌套集合的列表:
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的分层版本开始或使用数据库,您可以获得更快的版本。
答案 1 :(得分:1)
你想在哪里显示这个?内循环?外?在single.php? category.php? .....?
如果你想在一个单独的地方展示它,首先包括wp-load.php,就像这样
<? php
header('Content-Type: text/html; charset: UTF-8');
require( '../../../../wp-load.php' ); // use the path which will fit your situation
$my_query = new WP_Query();
$my_query->query(array(
'post_type' => 'post',
'orderby' => 'title',
'order' => 'ASC',
));
if ($my_query->have_posts()) : while ($my_query->have_posts()) : $my_query->the_post();
// use your code here after checking codex
endwhile;
endif;
?>
答案 2 :(得分:0)
我想做的是: The steps I Followed(请查看此链接)
我只想更改此代码:
<ul> <?php wp_list_categories('show_count=1&title_li=&hide_empty=0'); ?></ul>
以便以这种格式显示所有类别及其子项的列表及其ID:
实施例: 欧洲,英国,伦敦,东汉姆:25,28,34,36 这只是一个父类别(欧洲)及其子女(英国) 英国的孩子是伦敦,伦敦的孩子是东汉姆。 25是欧洲的id,28是英国的id,34是伦敦的id,36是东汉姆的id
请注意:我只想在页面上显示此列表,如上面的链接所述。 非常感谢你