2

ワードプレスのカテゴリ (親と子) を ID と共に表示する方法を教えてください。私はそれらをこの方法で印刷したい:

Europe,United Kingdom,London (Europe は親カテゴリーで、その子は United Kingdom) 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 コードで使用できます。

3 番目の選択肢は、データベースを読み取ることです。カテゴリ ツリーを含む wp_terms、wp_term_taxonomy、wp_term_relationships の 3 つのテーブルがあります。これがデータベース構造です。

編集:リストのネストされたコレクションとしてそのようなリストを生成するショートコードは次のとおりです。

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 に答える
0

私がやりたいことはこれです: 私が従った手順(このリンクを確認してください)

このコードのみを変更したい:

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

すべてのカテゴリとその子のリストが、次の形式で ID とともに表示されるようにします。

例: ヨーロッパ、英国、ロンドン、イースト ハム : 25,28,34,36 これは 1 つの親カテゴリ (ヨーロッパ) とその子 (英国) です。英国の子はロンドンで、ロンドンの子はイースト ハムです。25はヨーロッパのid、28はUKのid、34はロンドンのid、36はイーストハムのid

注意:上記のリンクで説明されているように、このリストをページに表示したいだけです。どうもありがとう

于 2013-04-03T05:16:03.973 に答える