web-dev-qa-db-ja.com

登録された分類法からのget_termsが機能しない

functions.phpでは、以下のような分類法をvar_dump()できます。

$taxonomies=get_taxonomies('','names');
echo '<pre>';
var_dump($taxonomies);

これは私を与える:

array(7) {
  ["category"]=>
  string(8) "category"
  ["post_tag"]=>
  string(8) "post_tag"
  ["nav_menu"]=>
  string(8) "nav_menu"
  ["link_category"]=>
  string(13) "link_category"
  ["post_format"]=>
  string(11) "post_format"
  ["project"]=>
  string(7) "project"
  ["team"]=>
  string(4) "team"
}

今、私は私の登録された分類法「プロジェクト」からすべての「カテゴリー」を得たいと思います

私はget_categories()とget_terms()の両方が空の配列を返すことを試みました。

$taxonomies = array(
    'project'
);

$args = array(
    'orderby'           => 'name',
    'order'             => 'ASC',
    'hide_empty'        => true,
    'exclude'           => array(),
    'exclude_tree'      => array(),
    'include'           => array(),
    'number'            => '',
    'fields'            => 'all',
    'slug'              => '',
    'parent'            => '',
    'hierarchical'      => true,
    'child_of'          => 0,
    'get'               => '',
    'name__like'        => '',
    'description__like' => '',
    'pad_counts'        => false,
    'offset'            => '',
    'search'            => '',
    'cache_domain'      => 'core'
);

$terms = get_terms($taxonomies, $args);
var_dump($terms);

与える

array(0) {
}

何がおかしいのですか?

1
caramba

get_terms を使用してここで指摘したいことがほんの2、3個あります。

  • 1つの値を配列に入れる必要はありません。単に値をそのまま変数に追加するだけです。

  • あなたの用語を返すには、実際に投稿をそれらに割り当てなければなりません。デフォルトでは、空の用語は非表示になっています。同じことが get_categories にも言えます。空の用語も表示する必要がある場合は、hide_emptyパラメーターをfalseに設定するだけです。

  • デフォルト値を呼び出す必要はありません。パラメータの値を変更しないのであれば、それを引数に追加しないでください。変更する予定のパラメータを追加するだけです。

これが正しい例です

$args = array(
    'hide_empty' => false, 
);

$terms = get_terms('project', $args);
var_dump($terms);

ここでは、空のものも含め、すべての用語を分類法projectのデフォルトの名前順に並べ替えています。

3
Pieter Goosen