web-dev-qa-db-fra.com

WooCommerce - Comment afficher la catégorie de produit au-dessus du produit?

Je suis un débutant dans la modification de wooCommerce. J'espère que quelqu'un pourra m'aider à résoudre un problème que je rencontre tout en essayant de modifier légèrement le plug-in pour l'adapter à la demande de mon client.

J'essaie de modifier WooCommerce pour afficher le nom de la catégorie de chaque produit. Je souhaite que le nom de la catégorie soit affiché au-dessus de l’image du produit sur la page principale du magasin . (la vue où de nombreux produits sont affichés à la fois sur l'écran)

J'ai cherché autour, et je n'arrive pas à trouver comment appeler la catégorie produit-> pour obtenir le nom de la catégorie pour chaque produit affiché.

Dans les fichiers wooCommerce, j'ai trouvé content-product.php
(dans templates/content-product.php)

et je voudrais injecter la catégorie pour chaque produit en ajoutant à cette action: do_action( 'woocommerce_before_shop_loop_item_title' );

Je comprends que je peux ajouter une fonction dans le fichier functions.php de mon thème pour injecter un nouveau code dans le '' woocommerce_before_shop_loop_item_title '

mais je ne peux pas trouver comment obtenir la catégorie pour chaque produit.

quelqu'un peut-il aider? ou dites-moi où je pourrais peut-être trouver la réponse?

toute aide sera très appréciée, merci!

3
user28546

Le titre du produit est ajouté au hook woocommerce_single_product_summary avec la priorité 5, vous voudrez donc ajouter au même hook avec une priorité inférieure (antérieure). Vous ajouteriez ceci au fichier functions.php de votre thème. Je présume que lorsque vous dites "catégorie", vous entendez la catégorie de produit WooCommerce, elle devrait donc renvoyer la première et l'imprimer avant le titre du produit:

function wpa89819_wc_single_product(){

    $product_cats = wp_get_post_terms( get_the_ID(), 'product_cat' );

    if ( $product_cats && ! is_wp_error ( $product_cats ) ){

        $single_cat = array_shift( $product_cats ); ?>

        <h2 itemprop="name" class="product_category_title"><span><?php echo $single_cat->name; ?></span></h2>

<?php }
}
add_action( 'woocommerce_single_product_summary', 'wpa89819_wc_single_product', 2 );
14
helgatheviking

vous avez besoin de la fonction get_categories, qui prend les arguments suivants:

get_categories( $separator, $before, $after )

donc, dans sa forme simple (en supposant qu’une seule catégorie par produit), ajoutez simplement <?php echo $product->get_categories(); ?> à votre content-product.php (ligne 53). Si vous avez plus de catégories, vous pouvez le faire comme sur une seule page de produit:

<?php echo $product->get_categories( ', ', '<span class="posted_in">' . _n( 'Category:', 'Categories:', sizeof( get_the_terms( $post->ID, 'product_cat' ) ), 'woocommerce' ) . ' ', '.</span>' ); ?>
3
Ewout