Ich kenne viele Leute, die nach dieser Frage gefragt haben, aber ich habe keinen geeigneten Weg gefunden, dies zu tun. So fügen Sie eine einfache meta_query (product_cat) hinzu, bevor die Abfrage der Shop-Seite ausgeführt wird.
Vielleicht mit einem Filter?
Grüße,
Adrien
Die Shop-Seite ist eigentlich eine Archivseite für Beiträge vom Typ 'Produkt'. Die Vorlage befindet sich in woocommerce/archive-product.php.
Sie müssen die Aktion pre_get_posts verwenden, um die Abfrage vor der Schleife vorzuverarbeiten, conditional_tags , um zu erkennen, dass Sie sich auf der Produktarchivseite befinden, und taxonomy query , um die Produktkategorien zu filtern, die gehören zur Taxonomie 'product_cat'.
Zum Beispiel werden im Folgenden (in der Datei functions.php Ihres Themas oder in einem Plugin) nur Produkte mit der Produktkategorie "Typ 1" angezeigt:
add_action('pre_get_posts','shop_filter_cat');
function shop_filter_cat($query) {
if (!is_admin() && is_post_type_archive( 'product' ) && $query->is_main_query()) {
$query->set('tax_query', array(
array ('taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => 'type-1'
)
)
);
}
}
Sie können Kategorien auch mit 'operator' => NOT IN ausschließen, und 'terms' können eine Reihe von Produktkategorie-Slugs sein.
Eine gute Einführung in die Anpassung von Abfragen ist http://www.billerickson.net/customize-the-wordpress-query/
Das hat bei mir funktioniert:
[product_category category="YOUR CATEGORY" per_page="8" columns="3" orderby="date" order="desc"]
Wenn Sie Produkte aus einer bestimmten Kategorie auf Ihrer Shop-Seite anzeigen möchten, können Sie den folgenden Code in die function.php
-Datei Ihres Themes einfügen.
// Execute before the loop starte
add_action( 'woocommerce_before_shop_loop', 'techlyse_before_action', 15 );
function techlyse_before_action() {
//To ensure Shop Page
if ( is_shop() ) {
$query_args['tax_query'] = array(
array(
'taxonomy' => 'product_cat',
'field' => 'id', //If you want the category slug you pass slug instead of id and 1330 instead of category slug.
'terms' => 1330
)
);
//print_r($query_args);
query_posts( $query_args );
}
}
// Execute after the loop ends
add_action( 'woocommerce_after_shop_loop', 'techlyse_after_action', 15 );
function techlyse_after_action() {
//To ensure Shop Page
if ( is_shop() ) {
//Reset the Query after Loop
wp_reset_query();
}
}