Comment obtenir le lien de catégorie de produit WooCommerce par ID ?
-
29-09-2020 - |
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?
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()
.