web-dev-qa-db-fra.com

get_terms () retourne un tableau vide

J'ai lu tous les articles sur l'affichage des termes d'une taxonomie personnalisée et cela ne fonctionne toujours pas. Ok, alors voici le code:

<?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;
?>

Et sur la sortie, je ne reçois qu'un tableau vide. Je regarde le code et ne peux pas savoir pourquoi. J'ai à la fois mon post personnalisé et ma taxonomie, j'ai créé quelques posts et termes:

<?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' );
?>

Votre aide sera très appréciée. Bonne journée, Patryk

3
bypatryk

get_terms retourne un tableau d'objets . Vous ne pouvez pas faire écho à un tableau, si vous le faites, vous obtiendrez simplement Array(). Ce que vous pouvez faire est print_r($array) ou var_dump($array) ou echo json_encode($array) pour voir les données qu’il contient.

Sinon, pour obtenir des éléments uniques, par exemple le nom, à partir des objets, vous devez passer $tax_terms à travers une boucle foreach pour obtenir les objets de chaque terme, puis à partir de là, vous pouvez également faire écho à l'objet spécifique que vous recherchez.

Quelque chose comme ça va marcher

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

foreach ( $tax_terms as $tax_term ) {

    echo $tax_term->name;

}
5
Pieter Goosen