2

谁能告诉我如何显示我的wordpress类别(父母和孩子)以及他们的ID。我希望它们以这种方式打印:

Europe,United Kingdom,London(Europe 是父类,而他们的子类是英国)10,20,33(这些是他们的 id)

欧洲,法国,巴黎 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;
}
?>

非常感谢您的帮助谢谢

4

3 回答 3

3

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 的分层版本开始或使用数据库,您可以获得更快的版本。

于 2013-04-02T00:31:16.910 回答
1

你想在哪里显示这个?内循环?外部?在single.php 中?类别.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;
?>
于 2013-04-02T03:12:10.517 回答
0

我想做的是: 我遵循的步骤(请检查此链接)

我只想更改此代码:

<ul> <?php wp_list_categories('show_count=1&title_li=&hide_empty=0'); ?></ul>

这样所有类别及其子类别的列表将与它们的 id 一起以这种格式显示:

示例: Europe,United Kingdom,London, East Ham : 25,28,34,36 这只是一个父类别(欧洲)及其子类别(英国),英国的子类别是伦敦,伦敦的子类别是东汉姆​​。25是欧洲的id,28是英国的id,34是伦敦的id,36是东汉姆的id

请注意:我只想在上面链接中描述的页面上显示此列表。非常感谢

于 2013-04-03T05:16:03.973 回答