Internet ·Programmierung

WooCommerce in eigenes Theme einbinden

Da ich vor kurzem ne Menge Probleme hatte, WooCommerce in ein Theme einzubinden und es im Internet keine gescheite Anleitung dazu gefunden hatte, schreibe ich jetzt hier meine Version in der Hoffnung, dass das jemandem hilft 🙂
Jedoch glaube ich nicht, dass meine Lösung hier eine endgültige ist und der ein oder andere nach weiteren Informationen im Netz nach suchen sollte.

Erster Schritt

Wichtig sind vor allem folgende zwei Ordner:

  • ./wp-content/themes/[deintheme]/ und
  • ./wp-content/plugins/woocommerce/templates

Als ersten Schritt gilt es folgendes zu tun: Alle Dateien in dem Ordner ./wp-content/plugins/woocommerce/templates sollten in den Ordner ./wp-content/themes/[deintheme]/woocommerce/templates/ kopiert werden.

Zweiter Schritt

Ist das getan, gehen wir wieder zurück in den Ordner ./wp-content/themes/[deintheme]/ und tun folgendes: Wir legen in dem Ordner eine weitere Kopie von page.php an und benennen diese um in woocommerce.php. D.h. wir haben sowohl page.php als auch woocommerce.php in dem Ordner.

In der eigentlichen Anleitung von WooCommerce steht, dass man nun in der Datei woocommerce.php folgende Zeile(n) suchen sollte:

<?php if ( have_posts() ) :
//...
<?php endif; ?>

und diese verändert in:

<?php woocommerce_content(); ?>

Die Lösung war noch nicht des Endes Lösung

D.h. das if und endif kommen weg und an seine Stelle kommt die WooCommerce_Content-Funktion. War bei mir leider nicht ganz der Fall. Ich hatte noch eine weitere Datei theloop.php, in der es die zwei Zeilen gab. Nur hatte ich noch folgendes Problem: Auf der Webseite sollte sowohl der Inhalt des Blogs zu finden sein, als auch der Shop. Das war fürs erste ein doch recht schwieriges Unterfangen, da, sobald ich diese Zeilen verändert habe, kam ja nur noch der Inhalt von WooCommerce rein und Posts oder ähnliches waren nicht mehr zu sehen.

Meine Lösung

Ich hatte dann jedoch folgende Idee: Sowohl in der Datei page.php als auch in der Datei woocommerce.php fand ich folgende Zeile:

get_template_part('theloop');

Diese verweist auf die Datei theloop.php. Nun bin ich hingegangen und habe in der Datei woocommerce.php die Zeile in:

get_template_part('theloop_woo');

und von der Datei theloop.php eine weitere Kopie angelegt und diese in theloop_woo.php umbenannt. Diese Datei dann nach den Vorgaben von WooCommerce verändert, d.h. die zwei Zeilen

<?php if ( have_posts() ) :
//...
<?php endif; ?>

und entsprechend

get_template_part('theloop_woo');

eingesetzt. Danach hat alles problemlos funktioniert, also der Shop war nun nicht mehr irgendwo in der Landschaft zu sehen, sondern innerhalb des Designs des Themes. Jedoch sah das an manchen Stellen nicht mehr ganz so glücklich aus, aber das waren dann andere Probleme. Das ist dann Theme-abhängig.

Ich hoffe, diese Anleitung war für euch verständlich. Solltet ihr noch fragen haben, zögert nicht unten in die Kommentare zu schreiben 🙂

4 Gedanken zu „WooCommerce in eigenes Theme einbinden

  1. Hallo!

    ich habe das gleiche Problem wie du. Ich muss woocommerce in ein bestehendens WP installieren.

    Hab alles in deiner Antleitung gemacht bis zu der loop.php die habe ich nicht in meinem Verzeichnis.

    Trotzdem werden mir die Dinge nicht meinem Theme entsprechend angezeigt. Ich versteh es leider nicht.

    Kannst du mir helfen

    Das ist die Woo Seite http://basix.chriscres.at/shop/

  2. Hi,
    nach so eine Beschreibeung habe ich gesucht. Leider hat sie mir überhaupt nicht weitergeholfen. Im ersten Schritt habe ich keinen woocommerce-Ordner in meinem Theme. Den zweiten Schritt kannte ich von der Woocommerce-Seite schon. Das hat mir leider nicht weitergeholfen. Letztendlich fand ich deine Zeile get_template_part(‚theloop‘); nicht.
    Wäre sonst ein schöner Artikel gewesen.

  3. Hallo,

    ich habe alles so gemacht wie in der Anleitung, allerdings kann ich den Kaufvorgang nun nicht mehr auslösen.

    Beim Klick auf den Artikel kommt immer nur wieder der Artikel…?

    Weiß jemand rat..?

    Marcus

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.