webentwicklung-frage-antwort-db.com.de

Wie kann eine benutzerdefinierte Anzeige sowohl für Woocommerce-Archiv- als auch für Produktkategorieseiten erstellt werden?

Bisher

Hallo zusammen, ich verstehe, dass meine Frage sehr eng mit einer allgemeinen Frage zu 'woocommerce' zusammenhängt.

Ich habe eine Vielzahl von Woo-Hooks, Filtern und Kopien von Original-Woo-Vorlagendateien in meinem untergeordneten Thema in einem Ordner namens woocommerce/erstellt.

Dies funktioniert und ich kann die Änderungen vornehmen, die Woocommerce in mein Thema integrieren.

Was ich versuche zu tun

Woocommerce verwendet archive-product.php, um Produktkategorien anzuzeigen. Diese Vorlage wird auch zum Anzeigen der Produkte der Kategorie verwendet.

Ich möchte die Produktseite ganz anders als die Kategorieseite gestalten und eine weitere Archivvorlage erstellen, die die Produkte einer Kategorie anzeigt

Ich denke, dass die Verwendung einer neuen products-product.php-Vorlagenseite oder meine beste Option wäre. Ich bin sehr daran interessiert, mehr und mehr über das Plug-in zu lernen, daher versuche ich, mich von schnellen CSS-Korrekturen fernzuhalten und zu lernen, wie man die Vorlagendateien und Hooks verwendet.

Ratschläge oder Hinweise in die richtige Richtung wäre sehr dankbar.

3
JohnLion

Im Allgemeinen können Sie WordPress anweisen, eine andere Vorlage zu laden. Die meistgesehenen Ansätze verwenden entweder den template_redirect oder den template_include hook. Es ist vorzuziehen, template_include zu verwenden, wie in diesem Artikel beschrieben. Nachfolgend ein Beispiel, wie man das angeht:

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;
    }
}

Zusätzliche Information:

Anmerkungen:

  • ungetestet
  • Es gibt möglicherweise eine spezifischere Möglichkeit, dies für/mit woocommerce zu tun, je nachdem, wie dort mit dem Laden von Vorlagen umgegangen wird. Dazu müssen Sie Ihre Recherche erweitern und/oder in den Woocommerce-Code eintauchen.

Bearbeiten:

Was Sie suchen - wenn Sie es wie im Woocommerce machen wollen - ist die Funktion wc_get_template_part() - früher vor WC 2.1, woocommerce_get_template_part() , jetzt veraltet. Ich habe vor einiger Zeit eine Antwort gegeben, wie man die letztere verwendet. Sie können dies für die neu benannte Funktion tun - die Funktionalität ist dieselbe - Funktion entsprechend. Die Antwort bezieht sich natürlich auf die direkte Verwendung der Funktion, in Ihrem Fall möchten und sollten Sie wahrscheinlich den entsprechenden Hook wc_get_template_part verwenden. Mit diesen Informationen sollten Sie in der Lage sein, dies im Woocommerce zu tun.

3
Nicolai