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 paramètre taxonomy
défini sur product_cat
. Tout fonctionne bien et je peux obtenir le terme id, le nom et même la limace. Ce que je n'arrive pas à comprendre, c'est comment obtenir le lien à afficher. Apparemment, get_category_link
ne fonctionne pas avec la taxonomie personnalisée et get_term_link
ne fonctionne pas non plus, je reçois 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?
Une autre mise à jour (septembre 2015):
I can utilise get_term_link
après tout. Le problème était que la chaîne devait être convertie en un entier. Utilisé un astuce Stack Overflow pour le moyen le plus rapide de la convertir en utilisant la valeur (int) $ en PHP.
Donc, cela ressemblerait à ceci si vous ne voulez 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 je l'ai compris.
J'ai utilisé get_term_link . Et j'avais 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 route avec la slug
et cela a fonctionné:
$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
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>';
}
Ça 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 lorsque vous utilisez l'objet renvoyé par get_categories()
.