Alle Produkte nach Kategorie mit WooCommerce anzeigen

13

Mit WooCommerce möchte ich alle Kategorien in einem Geschäft als Überschriften anzeigen, wobei alle unten aufgeführten Produkte in einer ungeordneten Liste aufgeführt sind. Ist das möglich zu tun? Ich habe ein paar Dinge gesehen, mit denen ich eine Liste von Kategorien oder eine Liste von Produkten für eine bestimmte Kategorie anzeigen kann, aber nichts, das alles so durchläuft, wie ich es beschrieben habe.

Folgendes verwende ich derzeit, um alle Kategorien aufzulisten:

<?php
$args = array(
    'number'     => $number,
    'orderby'    => $orderby,
    'order'      => $order,
    'hide_empty' => $hide_empty,
    'include'    => $ids
);
$product_categories = get_terms( 'product_cat', $args );
$count = count($product_categories);
if ( $count > 0 ){
    foreach ( $product_categories as $product_category ) {
        echo '<h4><a href="' . get_term_link( $product_category ) . '">' . $product_category->name . '</h4>';
    }
}
?> 
JacobTheDev
quelle
Sie brauchen nur eine Schleife von Schleifen. foreach()Führen Sie in Ihrem einen neuen WP_Query()Befehl aus, um alle Produkte in diesem Begriff zu erfassen. Führen Sie dann eine Schleife durch.
Helgatheviking
Ich glaube, ich verstehe, wie das geht, aber ich kann nichts über das Auflisten von Produkten nach Kategorien mit PHP finden (alles, was ich finden kann, ist Shortcode-Unsinn). Wenn Sie mir zeigen können, wie dieser Code aussieht, sollte ich den Rest herausfinden können.
JacobTheDev
2
Sie benötigen keinen Shortcode. Die Auflistung der Produkte nach Kategorien ist nur eine Steuerabfrage .
Helgatheviking
Ich wusste, dass ich keinen Shortcode brauchte, ich sagte, das ist alles, was ich finden konnte, was nicht hilfreich war. Der Link, den Sie zur Verfügung gestellt haben, sieht vielversprechend aus. Ich werde ihn morgen ausprobieren und zurückmelden, danke.
JacobTheDev
1
In Ordnung. Wenn Sie immer noch nicht weiterkommen, bearbeiten Sie Ihre Frage mit Ihrem neuen Codierungsversuch, und ich werde einen Blick darauf werfen.
Helgatheviking

Antworten:

25

Herausgefunden! Der folgende Code listet automatisch alle Kategorien und Beiträge jeder Kategorie auf!

$args = array(
    'number'     => $number,
    'orderby'    => 'title',
    'order'      => 'ASC',
    'hide_empty' => $hide_empty,
    'include'    => $ids
);
$product_categories = get_terms( 'product_cat', $args );
$count = count($product_categories);
if ( $count > 0 ){
    foreach ( $product_categories as $product_category ) {
        echo '<h4><a href="' . get_term_link( $product_category ) . '">' . $product_category->name . '</a></h4>';
        $args = array(
            'posts_per_page' => -1,
            'tax_query' => array(
                'relation' => 'AND',
                array(
                    'taxonomy' => 'product_cat',
                    'field' => 'slug',
                    // 'terms' => 'white-wines'
                    'terms' => $product_category->slug
                )
            ),
            'post_type' => 'product',
            'orderby' => 'title,'
        );
        $products = new WP_Query( $args );
        echo "<ul>";
        while ( $products->have_posts() ) {
            $products->the_post();
            ?>
                <li>
                    <a href="<?php the_permalink(); ?>">
                        <?php the_title(); ?>
                    </a>
                </li>
            <?php
        }
        echo "</ul>";
    }
}
JacobTheDev
quelle
Nett. Wenn Sie wirklich verrückt werden möchten, sollten Sie sich die Transients-API ansehen ... damit Sie nicht so viele Abfragen bei jedem Laden der Seite ausführen müssen.
Helgatheviking
Wie kann ich die Miniaturbilder für jede Kategorie abrufen?
Alyssa Reyes
@AlyssaReyes-Kategorien haben von Natur aus keine Miniaturansichten. Haben Sie hierfür ein benutzerdefiniertes Feld für Ihre Kategorien eingerichtet? Könnten Sie dies in einer neuen Frage mit mehr Details posten und mir den Link senden, damit ich es besser verstehen kann?
JacobTheDev
1
Danke Mann, du hast mir Zeit gespart und mich in die richtige Richtung gelenkt. Die einzige Art , wie ich diese Antwort verbessern könnte , ist WooCommerce die integrierte Abfrage - Klasse zu verwenden: WC_Product_Querystatt WP_Query, dann eine Verwendung foreachSchleife statt einer whileSchleife. Schauen Sie sich aus Gründen die Github-Dokumentation für die Abfrage an: github.com/woocommerce/woocommerce/wiki/… , aber das Wesentliche ist:> "Benutzerdefinierte WP_Queries-Abfragen können Ihren Code in zukünftigen Versionen von WooCommerce als Daten beschädigen bewegt sich zu benutzerdefinierten Tabellen für eine bessere Leistung. "
UncaughtTypeError