Question

Les catégories de produits de WooCommerce sont une taxonomie personnalisée appelée product_cat.Dans une fonction que j'écris, j'utilise get_categories avec le taxonomy paramètre réglé sur product_cat.Tout fonctionne bien et je peux obtenir le terme identifiant, le nom et même le slug.Ce que je n'arrive pas à comprendre, c'est comment afficher le lien.Apparemment get_category_link ne fonctionne pas avec la taxonomie personnalisée et get_term_link ne fonctionne pas non plus, j'obtiens une erreur.Voici ce que j'ai :

$prod_cat_args = array(
  'taxonomy'     => 'product_cat', //woocommerce
  'orderby'      => 'name',
  'empty'        => 0
);

$woo_categories = get_categories( $prod_cat_args );

foreach ( $woo_categories as $woo_cat ) {
    $woo_cat_id = $woo_cat->term_id; //category ID
    $woo_cat_name = $woo_cat->name; //category name

    $return .= '<a href="' . get_category_link( $woo_cat_id ) . '">' . $woo_cat_name . '</a>';
}//end of $woo_categories foreach  

Suggestions?

Était-ce utile?

La solution

Une autre mise à jour (sept.2015) :

je peut utiliser get_term_link après tout.Le problème était que la chaîne devait être convertie en entier.Utilisé un Astuce de débordement de pile pour le moyen le plus rapide de le convertir en utilisant la valeur (int)$ en PHP.

Cela ressemblerait donc à ceci si vous ne souhaitez pas utiliser le slug dans la boucle foreach :

$woo_cat_id_int = (int)$woo_cat_id; //convert 

Cette valeur convertie est utilisée à la place du slug dans get_term_link.J'espère que ça aide quelqu'un.:-)


On dirait que j'ai compris.

j'ai utilisé get_term_link.Et j'obtenais une erreur parce que je l'utilisais de cette façon :

get_term_link( $woo_cat_id, 'product_cat' );

Ce qui m'a donné cette erreur :

L'objet de la classe WP_Error n'a pas pu être converti en chaîne

J'ai donc choisi cette voie avec le slug et ça a marché :

$prod_cat_args = array(
  'taxonomy'     => 'product_cat', //woocommerce
  'orderby'      => 'name',
  'empty'        => 0
);

$woo_categories = get_categories( $prod_cat_args );

foreach ( $woo_categories as $woo_cat ) {
    $woo_cat_id = $woo_cat->term_id; //category ID
    $woo_cat_name = $woo_cat->name; //category name
    $woo_cat_slug = $woo_cat->slug; //category slug


    $return .= '<a href="' . get_term_link( $woo_cat_slug, 'product_cat' ) . '">' . $woo_cat_name . '</a>';
}//end of $woo_categories foreach  

Autres conseils

Merci, j'utilise

foreach ( $terms as $term ) {
$term_link = get_term_link( $term );
 echo '<li><a href="' . esc_url( $term_link ) . '">' . $term->name . '</a></li>';
}

Cela fonctionne parfaitement.

$prod_cat_args = array(
'taxonomy'     => 'product_cat', //woocommerce
            'orderby'      => 'name',
            'empty'        => 0
            );

            $terms = get_categories( $prod_cat_args );
            //$term_id=6;
            foreach ( $terms as $term ) {
            $term_link = get_term_link( $term );
            echo '<li><a class="shopping-now" href="' . esc_url( $term_link ) . '">' . $term->name . '</a></li>';
            }

get_term_link() fonctionne correctement, lors de l'utilisation de l'objet renvoyé par get_categories().

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top