web-dev-qa-db-fra.com

Essayer de lister les termes d'une taxonomie personnalisée à l'aide de get_categories

J'utilise ce petit bout de code pour essayer de répertorier les termes d'une taxonomie personnalisée à utiliser dans une boîte de sélection de méta-boîtes, mais il n'affiche rien lorsque je l'implémente (bien que je travaille avec la taxonomie par défaut de "catégorie")

$partners = array();
$partners_obj = get_categories(array('taxonomy' => 'partner-cat'));
$partners[''] = '-';
foreach ($partners_obj as $partner) {
    $partners[$partner->cat_ID] = $partner->cat_name;;
}

Comme vous pouvez le constater, ma taxonomie personnalisée est 'partner-cat' et il y a des publications dans un type de publication personnalisée dans 2 termes distincts de cette taxonomie.

Toute aide serait appréciée.

1
Poisontonomes

Vos termes de taxonomie sont-ils vides? Ils ne montreront pas par défaut. Vous pouvez essayer d'utiliser:

$partners_obj = get_terms( 'partner-cat', array('hide_empty' => false) );

Notez que get_categories() utilise get_term() pour récupérer vos termes.

Votre foreach n'est pas bon non plus. vous devriez plutôt accéder à term_id et name.

foreach ($partners_obj as $partner) {
    $partners[$partner->term_id] = $partner->name;
}

Code entier:

$partners = array();

$partners_obj =  get_terms( 'taxo-name-here', array('hide_empty' => false) );
echo '<pre>' . print_r( $partners_obj, true ) . '</pre>';
echo '<hr>';
$partners[''] = '-';
foreach ($partners_obj as $partner) {
    $partners[$partner->term_id] = $partner->name;;
}

echo '<pre>' . print_r( $partners, true ) . '</pre>';
1
RRikesh
get_categories()

récupère des taxonomies de type 'catégories' en particulier http://core.trac.wordpress.org/browser/tags/3.6/wp-includes/category.php#L0 , pour obtenir une taxonomie personnalisée, utilisez get_terms () à la place, ici http://codex.wordpress.org/Function_Reference/get_terms

$terms = get_terms( 'partner-cat', 'orderby=count&hide_empty=0' );
$count = count($terms);
if ( $count > 0 ){
 echo "<ul>";
 foreach ( $terms as $term ) {
   echo "<li>" . $term->name . "</li>";

 }
 echo "</ul>";
}

Assurez-vous de spécifier le slug que vous avez enregistré pour la taxonomie et de remplacer WP_DEBUG par true dans votre fichier de configuration pour rechercher d'autres erreurs. Vous pourriez peut-être récupérer la taxonomie avant de l'enregistrer et ne générer aucun résultat. Dans ce cas, vous obtiendrez une erreur. Erreur.

pouvez-vous coller votre code pour enregistrer la taxonomie?

1
sven

si vous utilisez des types de publication personnalisés, CPT et je suppose que vous avez créé une taxonomie personnalisée pour ce type de publication personnalisée:

Vous avez CPType nommé Produits et vous avez CPTaxonomy nommé Produits Catégories.

Si vous essayez d'afficher CPTaxonomy dans la page de vos produits quelque part dans la boucle, je vous suggère d'utiliser cette fonction selon le code WP:

http://codex.wordpress.org/Function_Reference/get_terms

le code pour obtenir le CPTaxonomy pour le CPType devrait être le suivant:

$categories = get_terms( 'products', 'orderby=count&hide_empty=0' );

puis pour afficher les taxonomies, utilisez ce code:

<?php foreach($categories as $category):
 print $category->slug;print $category->name; 
?>
0
Mile Milosheski

La manière Wordpress:

$categories = (array) get_terms('partner-cat', array('hide_empty' => false));
foreach (array_keys($categories) as $k)
{
    _make_cat_compat($categories[$k]);
}

Ceci utilise l’implémentation directe utilisée par Wordpress dans la fonction get_categories () située dans wp_includes\category.php

0
Travis van der Font
            <?php
                $args = array(
                    'type' =>'',//optional
                    'number' => '',
                    'hide_empty' => 0,
                    'taxonomy'  => 'product_cat' //your custom taxonomy name
                ); 
                $categories = get_categories($args); 
                //echo "<pre>";   print_r($categories);
                foreach($categories as $cat){
                    $catid = $cat->term_id;                 
                    $thumbnail_id = get_woocommerce_term_meta($catid, 'thumbnail_id', true );
                    $image = wp_get_attachment_url( $thumbnail_id );
                    $catname = $cat->name;
                    $catpage = $cat->slug;
                ?>
0
Narinder kumar