J'ai commencé à apprendre à créer des modèles avec WooCommerce et j'avais rencontré un petit problème. Par exemple, dans le fichier php content-single-product.php du plugin Woocommerce, j'ai des chaînes comme ça:
<?php
/**
* woocommerce_single_product_summary hook.
*
* @hooked woocommerce_template_single_title - 5
* @hooked woocommerce_template_single_rating - 10
* @hooked woocommerce_template_single_price - 10
* @hooked woocommerce_template_single_excerpt - 20
* @hooked woocommerce_template_single_add_to_cart - 30
* @hooked woocommerce_template_single_meta - 40
* @hooked woocommerce_template_single_sharing - 50
*/
do_action( 'woocommerce_single_product_summary' );
?>
Et par exemple, quand je veux éditer ceci (supprimer certains champs et changer la structure) j'essaie d'effacer la chaîne:
do_action ('woocommerce_single_product_summary');
et après cela, écrivez comme ceci:
<?php
/**
* woocommerce_single_product_summary hook.
*
* @hooked woocommerce_template_single_title - 5
* @hooked woocommerce_template_single_rating - 10
* @hooked woocommerce_template_single_price - 10
* @hooked woocommerce_template_single_excerpt - 20
* @hooked woocommerce_template_single_add_to_cart - 30
* @hooked woocommerce_template_single_meta - 40
* @hooked woocommerce_template_single_sharing - 50
*/
//do_action( 'woocommerce_single_product_summary' );
do_action('woocommerce_template_single_title');
?>
Pourriez-vous me dire pourquoi cela ne fonctionne pas?
Quelle est la bonne façon d'éditer comme ça?
Merci
Tout d'abord dans référence ci-dessous , vous trouverez comment remplacer correctement les modèles de woocommerce via un thème (en évitant d'éditer les modèles de plugins).
Dans votre premier extrait de code, comme vous pouvez le voir pour le crochet woocommerce_single_product_summary
, vous avez dans l'ordre tous les différents modèles qui sont @hooked
dans cet emplacement du crochet avec do_action()
WordPress:
do_action( 'woocommerce_single_product_summary' );
Donc, dans votre code personnalisé (le 2e extrait de code), vous venez de remplacer le crochet , par le slug de modèle accroché (c'est-à-dire [~ # ~] pas [~ # ~] un crochet) et ne fonctionnera pas [~ # ~] [~ # ~] comme point d'entrée crochet d'action . Voir les références au bas de cette réponse pour la liste des actions et filtres WooCommerce hooks existants …
Conséquences: Tous les autres modèles accrochés dans le code de liste commentée (commençant par @ accroché) seront manquants si vous remplacez un crochet par un slug de modèle .
Explications (Comment):
COMMENT - Exemple concret:
Vous souhaitez personnaliser le modèle
woocommerce_template_single_title
Accroché danswoocommerce_single_product_summary
Crochet .THE HOOK NAME: woocommerce_single_product_summary hook. THE TEMPLATES HOOKED (+priority order number) => corresponding template file name: — woocommerce_template_single_title (5) => single-product/title.php — woocommerce_template_single_rating (10) => single-product/rating.php — woocommerce_template_single_price (10) => single-product/price.php — woocommerce_template_single_excerpt (20) => single-product/short-description.php — woocommerce_template_single_add_to_cart(30) => single-product/add-to-cart/ (6 files depending on product type) — woocommerce_template_single_meta (40) => single-product/review-meta.php — woocommerce_template_single_sharing - (50) => single-product/share.php
Ensuite, vous devrez modifier le crochet correspondant
woocommerce_single_product_summary
title.php
situé danssingle-product
(sous-dossier)… Enfin, ce n'est pas si compliqué, une fois que nous comprenons les fichiers de structure de modèle et les crochets dans ces modèles.Le numéro de priorité , donne l'ordre des modèles accrochés: plus petit en premier, plus grand à la fin…
Voir aussi: Hooks et leur file d'attente d'exécution des fonctions hookées dans Wordpress et Woocommerce
Autres moyens:
Vous pouvez également utiliser tous les crochets de modèles existants pour cibler des modifications ou des personnalisations très spécifiques, avec des fonctions personnalisées situées dans le
function.php
fichier de votre thème enfant (ou thème) actif ou tout autre plugin.
Exemple utilisant add_action()
WordPress:
// define the woocommerce_single_product_summary callback function
function my_custom_action() {
echo '<p>This is my custom action function</p>';
};
add_action( 'woocommerce_single_product_summary', 'my_custom_action', 15 );
Cette fonction a un numéro de priorité de
15
et affichera "Ceci est ma fonction d'action personnalisée" = texte de chaîne, entre leproduct price
et leproduct short description
…Arguments optionnels de cette fonction hookée pour ce hook:
- Le slug du modèle (chaîne).
- La priorité (int).
Les références: