web-dev-qa-db-ja.com

Foreachループを使わずにget_categories()を使ってトップレベルのカテゴリのみを取得

非常に単純な質問:これが私のget_categories()コードです。

<?php $args = array(
    'show_option_all'   => '',
    'show_option_none'  => '',
    'orderby'           => 'ID',
    'order'             => 'ASC',
    'show_count'        => 0,
    'hide_empty'        => 0,
    'exclude'           => '1',
    'hierarchical'      => 0,
    'depth'             => 1,
    'number'            => 12
    );
?>

<?php $categories = get_categories( $args ); ?>

<div class="middle-left">
    <ul>
        <?php for( $i=0; $i<4; $i++ ) {
            echo "<li>" . $categories[$i]->{'name'} . "</li>";
        } ?>
    </ul>
</div>
<div class="middle-middle">
    <ul>
        <?php for( $i=4; $i<8; $i++ ) {
            echo "<li>" . $categories[$i]->{'name'} . "</li>";
        } ?>
    </ul>
</div>
<div class="middle-right">
    <ul>
        <?php for( $i=8; $i<12; $i++ ) {
            echo "<li>" . $categories[$i]->{'name'} . "</li>";
        } ?>
    </ul>
</div>

長い検索の後、私はforeachループなしでstdClassオブジェクトに入る方法を手に入れました、そして私はこの方法で進みたいです。しかし、私はトップレベルのカテゴリーだけが欲しいのです。

ここで引数を変更するにはどうすればいいですか。

4
Mayeenul Islam

parent引数を指定して get_terms を使用します。その機能のためのコーデックスページから、私の強調点:

parent(integer)この用語の直接の子を取得します(明示的な親がこの値である用語のみ)。 0が渡されると、最上位の用語のみが返されます。 デフォルトは空の文字列です。

テストされていませんが、これでうまくいくはずです。

$categories = get_terms( 
   'category', 
   array('parent' => 0)
);

もちろん、他に必要な引数を追加する必要があります。

11
s_ha_dum

parent0に設定します

$args = array(
  'parent' => 0,
  'hide_empty' => 0
);
5
T.Todua