web-dev-qa-db-ja.com

get_terms()は空の配列を返します

カスタム分類法の用語の表示に関するすべての記事を読んだことがありますが、まだ機能していません。わかりました、それでここにコードがあります:

<?php
//part of template-offer.php
$taxonomy = 'brand';
$term_args=array(
  'hide_empty' => false,
  'orderby' => 'name',
  'order' => 'ASC'
);
$tax_terms = get_terms($taxonomy,$term_args);
echo $tax_terms;
?>

そして出力で私は空の配列を得ているだけです。私はコードを見つめていて、その理由を見つけることができません。私は私のカスタム投稿と分類学の両方を働いていて、いくつかの投稿と用語を作成しました:

<?php
//creating a custom taxonomy called 'brand'
add_action( 'init', 'create_custom_taxonomies', 0 );
function create_custom_taxonomies() {
    $labels = array(
        'name'              => _x( 'Brands', 'taxonomy general name' ),
        'singular_name'     => _x( 'Brand', 'taxonomy singular name' ),
        'search_items'      => __( 'Search Brands' ),
        'all_items'         => __( 'All Brands' ),
        'parent_item'       => __( 'Parent Brand' ),
        'parent_item_colon' => __( 'Parent Brand:' ),
        'edit_item'         => __( 'Edit Brand' ),
        'update_item'       => __( 'Update Brand' ),
        'add_new_item'      => __( 'Add New Brand' ),
        'new_item_name'     => __( 'New Brand Name' ),
        'menu_name'         => __( 'Brand' ),
    );
    $args = array(
        'hierarchical'      => true,
        'labels'            => $labels,
        'show_ui'           => true,
        'show_admin_column' => true,
        'query_var'         => true,
        'rewrite'           => array( 'slug' => 'brand' ),
    );
    register_taxonomy( 'brand', null , $args );
}


//creating a custom post type that is using 'brand' taxonomy
function create_post_type() {
    register_post_type( 'products',
        array(
        'labels' => array(
            'name' => __( 'Products' ),
            'singular_name' => __( 'Product' ),
            'add_new' => _x('Add New', 'products'),
            'add_new_item' => __('Add New Product'),
            'edit_item' => __('Edyt Product'),
            'new_item' => __('New Product'),
            'view_item' => __('View Product'),
            'search_items' => __('Search Product'),
            'not_found' =>  __('Nothing found'),
        ),
        'taxonomies' => array('brand'),
        'supports' => array('title', 'editor', 'thumbnail'),
        'public' => true,
        'has_archive' => true,
        'show_ui' => true,
        )
    );

}
add_action( 'init', 'create_post_type' );
?>

どうぞよろしくお願いします。良い一日を過ごして、Patryk

3
bypatryk

get_termsオブジェクトの配列 を返します。あなたが配列をエコーすることはできません、もしそうであれば、あなたはただArray()を得るでしょう。それに含まれるデータを見るためにあなたができることはprint_r($array)var_dump($array)またはecho json_encode($array)です。

それ以外の場合は、単一の要素を取得します。オブジェクトからの名前は、各用語からオブジェクトを取得するためにforeachループを介して$tax_termsを渡す必要があり、それからそこからあなたは自分の後にいる特定のオブジェクトをエコーすることもできます。

このような何かがうまくいくでしょう

$tax_terms = get_terms( $taxonomy, $args );

foreach ( $tax_terms as $tax_term ) {

    echo $tax_term->name;

}
5
Pieter Goosen