Un utente ha chiesto informazioni su WooCommerce di Wordpress

Woocommerce: ordina i prodotti in base alle loro categorie in cicli foreach

Un utente ha chiesto 👇

Sto creando un prodotto custom-archive.php come pagina del mio negozio principale, quindi nel tema child ho questo ciclo di prodotto personalizzato:


woocommerce_product_loop_start();
if ( wc_get_loop_prop( 'total' ) ) {

    $categories = get_terms( ['taxonomy' => 'product_cat', 'hide_empty' => false] );
    foreach ( $categories as $category ) {

        $title_value = (mb_strlen($category->parent) + 1);

        print_r("<h$title_value>$category->name</h$title_value>");

        while ( have_posts() ) {
            the_post();

            /**
             * Hook: woocommerce_shop_loop.
             */
            do_action( 'woocommerce_shop_loop' );

            wc_get_template_part( 'content', 'product' );
        }
    }
}
woocommerce_product_loop_end();

Il vero problema è che mostra tutti i prodotti disponibili nel negozio, per ogni categoria, perché non so come rispondere alla domanda su come ottenere prodotti solo con i prodotti della categoria attuale. Come posso dirgli di farlo?

Questo argomento è stato modificato 1 anno, 3 mesi fa da.

Supporto per plugin

(@ thup90)

1 anno, 3 mesi fa

Ciao,

Puoi utilizzare il tag condizionale is_product_category () per ottenere prodotti da una categoria: https://docs.woocommerce.com/document/conditional-tags/#section-5

(@harishanker)

Ingegnere automatizzato della felicità

1 anno, 3 mesi fa

Ciao @adzetko

Volevo solo darti un input aggiuntivo sulla tua domanda.

Ho guardato il codice che hai condiviso.

Vedo che hai un trie per ottenere un elenco di categorie con:


 $categories = get_terms( ['taxonomy' => 'product_cat', 'hide_empty' => false] );
    foreach ( $categories as $category ) {

Tuttavia, il codice per visualizzare i post è il seguente:


  while ( have_posts() ) {
            the_post();

Vedo che l’hai preso da qui: https://github.com/woocommerce/woocommerce/blob/0e2ed1f408cae6989a508d6f23b233c20ae31aa3/templates/archive-product.php#L61-L62

Ciò restituisce ogni prodotto se utilizzato in un modello personalizzato. Per visualizzare l’elenco delle categorie, sarà necessaria una nuova chiamata WP_Query() con il $category variabile.

Questo spiega come puoi WP_Query() per le variabili di categoria: https://stackoverflow.com/a/47650240

Puoi usare questo WP_Query per generare prodotti invece di: while ( have_posts() ) { the_post(); individualmente (generato da ogni prodotto).

Ad esempio, se utilizzi la variabile $loop generare WP_Query() i prodotti appartenenti alla categoria (come menzionato in sezione flusso-flusso Ho condiviso sopra), puoi utilizzare il seguente codice per elencare solo i post relativi a quella categoria:


        if ( $loop->have_posts() ) {
            while ( $loop->have_posts() ) : $loop->the_post();
                wc_get_template_part( 'content', 'product' );
            endwhile;
        } else {
            echo __( 'No products found' );
        }

Spero abbia senso.

Facci sapere se hai altre domande. Siamo felici di aiutarti!

Questa risposta è stata modificata 1 anno, 3 mesi fa. Supporto per plugin

(@ rynald0s)

Ingegnere automatizzato della felicità

1 anno, 2 mesi fa

Ciao!

Non ti rispondiamo da un po ‘, quindi vado avanti e contrassegno questo thread come risolto. Se hai altre domande, inizia una nuova discussione.

Saluti!

Was this helpful?

0 / 0

Lascia un commento 0

Your email address will not be published. Required fields are marked *