it-swarm.com.de

WooCommerce-Aktions-Hooks und überschreibende Vorlagen

Ich habe angefangen zu lernen, wie man Vorlagen mit WooCommerce erstellt, und ich hatte ein kleines Problem. Zum Beispiel habe ich in der PHP-Datei content-single-product.php des Woocommerce-Plugins solche Strings:

     <?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' );

    ?>

Und wenn ich dies zum Beispiel bearbeiten möchte (einige Felder löschen und die Struktur ändern), versuche ich, die Zeichenfolge zu löschen:

do_action ('woocommerce_single_product_summary');

und danach schreibe so:

<?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');
    ?>

Kannst du mir bitte sagen, warum das nicht funktioniert?

Was ist der richtige Weg, um so zu bearbeiten?

Vielen Dank

16
Dmitry Shulga

Zuerst in Referenz unten erfahren Sie, wie Woocommerce-Vorlagen ordnungsgemäß überschrieben werden über ein Thema(ohne Bearbeitung der Plugin-Vorlagen).

Wie Sie für _woocommerce_single_product_summary_ hook sehen können, haben Sie in Ihrem ersten Code-Snippet alle verschiedenen Vorlagen, die _@hooked_ in dieser Hook-Position withdo_action()WordPress function:

_do_action( 'woocommerce_single_product_summary' ); 
_

Also haben Sie in Ihrem benutzerdefinierten Code (dem zweiten Code-Snippet) gerade den hook durch den hooked template slug (das heißt [~ # ~] nicht [~ # ~) ersetzt ] a hook)und wird [~ # ~] nicht [~ # ~] als Einstiegspunkt arbeiten action hook . In den Referenzen am Ende dieser Antwort finden Sie die Liste der WooCommerce-Aktionen und -Filter vorhandene Hooks

Konsequenzen: Alle anderen Hook-Vorlagen im Code der kommentierten Liste (beginnend mit@ hooked) fehlen wenn Sie einen Hook durch einen Template-Slug ersetzen .


Erklärungen(How to):

SO WIRD'S GEMACHT - Konkretes Beispiel:

Sie möchten anpassen _woocommerce_template_single_title_ verknüpfte Vorlage in _woocommerce_single_product_summary_ verknüpfen .

_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
_

Dann musst du editieren den entsprechenden _woocommerce_single_product_summary_ Hook _title.php_ befindet sich in _single-product_ (Unterordner)… Endlich ist es nicht so kompliziert, wenn wir die Vorlagenstrukturdateien und die Haken in diesen Vorlagen verstanden haben.

Die Prioritätsnummer gibt die Reihenfolge für die verknüpften Vorlagen an: Kleiner zuerst, größer am Ende…

Siehe auch: Hooks und ihre Ausführungswarteschlange für Hooks in Wordpress und Woocommerce


Andere Möglichkeiten:

Sie können auch alle vorhandenen Vorlagen-Hooks verwenden , um ganz bestimmte Änderungen oder Anpassungen vorzunehmen. Die benutzerdefinierten Funktionen befinden sich in der Datei _function.php_ Ihres aktiven untergeordneten Themas (oder Themas) oder in einer beliebigen Plugin-Datei auch.

Beispiel mit add_action() WordPress function:

_// 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 ); 
_

Diese Funktion hat die Prioritätsnummer _15_ und zeigt"Dies ist meine benutzerdefinierte Aktionsfunktion"Zeichenfolgentext zwischen _product price_ an. und der _product short description_

Optionale Argumente dieser Hook-Funktion für diesen Hook:
- Der Template Slug (String).
- Die Priorität (int) .


Verweise:

43
LoicTheAztec