2017-02-20 1 views
0

Warum ist es die bevorzugte Wahl, WooCommerce-Funktionsänderungen in der Datei 'function.php' des Themes zu platzieren? Überstunden würde dies die Datei ziemlich groß machen. Ich bin der Auffassung, dass es im Allgemeinen besser ist, viele gut organisierte kleinere Dateien zu haben, als weniger viel größere Dateien.Kann ich WooCommerce-Funktionen in der Datei 'wc-template-functions.php' ändern oder sollte ich bei solchen Änderungen an der Datei 'functions.php' bleiben?

In diesem Sinne, was ist falsch mit dem Kopieren der Dateien "wc-template-functions.php" und "wc-templates-hooks.php" in Ihr Thema (unter Beibehaltung seiner Dateihierarchie) und diese Dateien entsprechend ändern ?

Als Nebenanforderung, von einem relativen Neuling zur WooCommerce-Plattform, würde ich mich freuen, wenn ich eine "Ja, das funktioniert" oder eine "Nein, ich habe etwas verpasst" -Antwort auf meine unten verstehen, wie der WooCommerce; Dateien, Haken, Aktionen und Vorlagen arbeiten alle mit ein und andere

Mein Verständnis:

  1. Die WooCommerce Funktionen innerhalb der 'WC-template-functions.php' Datei registriert sind. Zum Zweck dieser Erklärung möchte ich auf den woocommerce_breadcrumb Eintrag verweisen.
  2. WooCommerce verwendet dann die Datei "wc-templates-hooks.php", um die registrierte Funktion mit einem typischen Eintrag wie add_action('woocommerce_before_main_content','woocommerce_breadcrumb', 20, 0); aufzurufen. Dies leitet einfach woocommerce_breadcrumb, um innerhalb der woocommerce_before_main_content Hook aufgerufen werden.
  3. WooCommerce ist dann in der Lage, das oben genannte auszugeben, indem Sie do_action('woocommerce_before_main_content'); wo notwendig platzieren. In diesem Fall in allen Template-Dateien.

Antwort

3

Ihre 1,2,3 Verständnis ist richtig.

Die Dateien wc-template-functions.php und wc-templates-hooks.php werden jedoch nicht überschrieben, indem Sie ähnliche Dateien in Ihr Design einfügen, so dass sie in Ihrem Design nichts tun würden.

Es ist auch eine schlechte Idee (meiner Meinung nach) zu Großhandel kopieren/überschreiben Dateien, wenn Sie etwas bestimmtes ändern möchten. Ich musste einen ganzen Ordner mit WooCommerce-Vorlagen durchsuchen, wenn die Site eines Kunden abgestürzt war, um die tatsächlichen Änderungen zu finden, die gepflegt werden mussten.

Es ist nichts falsch daran, Ihre functions.php Datei in kleinere, besser verwaltbare Dateien zu trennen. Und so, Sie könnte eine woocommerce-functions.php Datei mit dem Namen, was Sie möchten, um Ihre WooCommerce-spezifischen Code speichern möchten.

bearbeiten einige Gedanken zu erweitern

Immer WooCommerce (oder eine Wordpress-Funktion wirklich) zeigt Ihnen dieses Muster:

if (! function_exists('some_function_name')) { 

    function some_function_name() { 
     echo 'taco'; 
    } 
} 

Sie eine steckbare Funktion haben, und Sie können es nur in Ihrem Thema des definieren function.php und WooCommerce wird Ihre Version von some_function_name() verwenden.

Pluggable-Funktionen sind jedoch süchtig, wo sie süchtig sind und Sie können sie nicht verschieben, indem Sie sie in Ihrem Theme/Plugin neu definieren. Ein leistungsfähigerer Ansatz besteht also darin, die Funktion von ihrem Hook zu entfernen und entweder zu einem anderen Hook hinzuzufügen oder eine eigene benutzerdefinierte Funktion oder beides hinzuzufügen.Hier ist ein Beispiel, das einen benutzerdefinierten Titel nach dem Preis bewegt:

function kia_switch_loop_title(){ 
    remove_action('woocommerce_shop_loop_item_title', 'woocommerce_template_loop_product_title', 10); 
    add_action('woocommerce_after_shop_loop_item_title', 'kia_template_loop_product_title', 15); 
} 
add_action('woocommerce_before_shop_loop_item', 'kia_switch_loop_title'); 

function kia_template_loop_product_title() { 
    echo '<h4 class="we-do-what-we-want">' . get_the_title() . '</h4>'; 
} 
+0

Danke für die Anleitung und helfen, meinen Geist in Ruhe, in Bezug auf meine WooCommerce Verständnis. Ihr Vorschlag, die Datei "functions.php" aufzuteilen, werde ich in den nächsten Wochen behandeln. – Craig

+1

Denken Sie auch daran, dass Dinge, die das Aussehen der Website ändern, in Ihrem Thema (und damit 'functions.php') enthalten sind. Aber Code, der die Funktionalität der Site ändert, ist am besten für sein eigenes Plugin geeignet ... oder ein Site-spezifisches Plugin, das eine Sammlung all Ihrer "Snippets" sein kann. – helgatheviking

+0

Ich habe noch nicht gelernt, Plugins zu erstellen. Während ich weiß, dass es am besten ist, solche Codes in einem Plugin zu platzieren, was ist der Hauptgrund dafür? Bezieht es sich auf Kompatibilität? Sollte also ein Update über WooCommerce usw. mit der Funktionalität eines Themas in Konflikt stehen, können Sie es einfach deaktivieren, während Sie die relevanten Änderungen vornehmen. – Craig

Verwandte Themen