web-dev-qa-db-fra.com

Comment avoir un affichage personnalisé pour les archives de woocommerce et les pages de catégories de produits?

Jusque là

Bonjour, je crois comprendre que ma question est très étroitement liée à une question commune sur le "commerce électronique".

J'ai utilisé une variété de crochets, filtres et création de copies de fichiers de modèles woo originaux dans mon thème enfant dans un dossier appelé woocommerce /.

Cela fonctionne et je peux effectuer les modifications qui intègrent woocommerce dans mon thème.

Ce que j'essaye de faire

Woocommerce utilise archive-product.php pour afficher les catégories de produits. Il utilise également ce modèle pour afficher les produits de la catégorie.

Je souhaiterais styler la page de produits de manière très différente de la page de catégorie et créer un autre modèle d'archive affichant les produits d'une catégorie

Je pense qu'utiliser une nouvelle page de modèle products-product.php ou serait ma meilleure option. Je suis très intéressé à en apprendre de plus en plus sur le plug-in. Par conséquent, j'essaie d'éviter les correctifs CSS rapides et d'apprendre à utiliser les fichiers de modèle et les points d'ancrage.

Des conseils ou des points dans la bonne direction seraient grandement appréciés.

3
JohnLion

Généralement, vous pouvez dire à WordPress de charger un autre modèle. Les approches les plus fréquemment utilisées utilisent soit le template_redirect , soit le template_include hook. Il est préférable d'utiliser template_include comme décrit dans cet article article . En suivant un exemple sur la façon d’aborder ceci:

Code:

// load the woocommerce category archive template
add_filter( 'template_include', 'wpse138858_woocommerce_category_archive_template' );
function wpse138858_woocommerce_category_archive_template( $original_template ) {
    // we're loading the template conditionally, 
    // but only if we're actually on a woocommerce category archive
    if ( is_product_category() ) {
        // you've to create the template you want to use here first
        return get_template_directory().'/woocommerce-category-archive.php';
    } else {
        return $original_template;
    }
}

Information additionnelle:

Remarques:

  • non testé
  • Il pourrait y avoir un moyen plus spécifique de le faire pour/avec woocommerce, selon la façon dont ils gèrent le chargement du modèle. Pour cela, vous devez approfondir vos recherches et/ou plonger dans le code de commerce.

Modifier:

Ce que vous recherchez - si vous voulez le faire de manière woocommerce - est la fonction wc_get_template_part() - anciennement, avant WC 2.1, woocommerce_get_template_part() , maintenant obsolète. J'ai donné une réponse sur la façon d'utiliser ce dernier il y a quelque temps, vous pouvez le faire pour le nouveau nom - la fonctionnalité est identique - fonction en conséquence. La réponse concerne bien sûr l’utilisation directe de la fonction. Dans votre cas, vous voudrez probablement utiliser le hook correspondant wc_get_template_part . Avec ces informations à portée de main, vous devriez pouvoir le faire de la même manière.

3
Nicolai