Zeigen Sie vorgestellte Produkte über eine benutzerdefinierte Schleife im Woocommerce auf der Vorlagenseite
-
-
Fügen Sie das Ergebnis von `var_dump (get_meta_values ('_featured','product') hinzu;` wobei die Funktion `get_meta_values` von derin [dieser Antwort]erläutertenbenutzerdefinierten Funktion (http://wordpress.stackexchange.com/a/) unterstützt wird.9451/31545)Add the result from `var_dump( get_meta_values( '_featured', 'product' );` where the function `get_meta_values` is supported by the custom function explained in [this answer](http://wordpress.stackexchange.com/a/9451/31545)
- 0
- 2015-07-24
- Pieter Goosen
-
9 Antworten
- Stimmen
-
- 2015-09-15
Ändern Sie Ihre Argumente so:
$meta_query = WC()->query->get_meta_query(); $meta_query[] = array( 'key' => '_featured', 'value' => 'yes' ); $args = array( 'post_type' => 'product', 'stock' => 1, 'showposts' => 6, 'orderby' => 'date', 'order' => 'DESC', 'meta_query' => $meta_query );
Wenn Sie zu wp-content/plugins/woocommerce/includes/class-wc-shortcodes.php (@ 595)gehen,können Sie herausfinden,wie diesfür WC-Shortcodesgemacht wird.
Change your args to be like this:
$meta_query = WC()->query->get_meta_query(); $meta_query[] = array( 'key' => '_featured', 'value' => 'yes' ); $args = array( 'post_type' => 'product', 'stock' => 1, 'showposts' => 6, 'orderby' => 'date', 'order' => 'DESC', 'meta_query' => $meta_query );
If you go to wp-content/plugins/woocommerce/includes/class-wc-shortcodes.php (@595) you can find how it's done for WC shortcodes.
-
Der Schlüssel zubeachtenist,dass '_featured'nicht alsnumerischer Wertgespeichert wird.Es wird als Zeichenfolge 'Ja' oder 'Nein'gespeichert.Alles anderein der OP-Frage solltefunktionieren,hatfürmichfunktioniert.They key to note is that '_featured' is not stored as a numeric value. It is stored as a string 'yes' or 'no'. Everything else in the OP question should work, worked for me.
- 3
- 2016-07-03
- i_a
-
Ab WooCommerce 3.0funktioniert diese Lösungnichtmehr.Bittebeachten Siemeine aktualisierte Antwort unten.As of WooCommerce 3.0, this solution no longer works. Please see my updated answer below.
- 1
- 2018-06-12
- dpruth
-
- 2017-05-08
Dies hat sichin WooCommerce 3.0geändert.Esistnichteinfacheine meta_query,sondernenthältjetzteine tax_query.Die Argumente sindjetzt:
$meta_query = WC()->query->get_meta_query(); $tax_query = WC()->query->get_tax_query(); $tax_query[] = array( 'taxonomy' => 'product_visibility', 'field' => 'name', 'terms' => 'featured', 'operator' => 'IN', ); $args = array( 'post_type' => 'product', 'post_status' => 'publish', 'ignore_sticky_posts' => 1, 'posts_per_page' => $atts['per_page'], 'orderby' => $atts['orderby'], 'order' => $atts['order'], 'meta_query' => $meta_query, 'tax_query' => $tax_query, );
Siehe woocommerce/includes/class-wc-shortcodes.php
This has changed in WooCommerce 3.0. It's not simply a meta_query, but now includes a tax_query. The arguments are now:
$meta_query = WC()->query->get_meta_query(); $tax_query = WC()->query->get_tax_query(); $tax_query[] = array( 'taxonomy' => 'product_visibility', 'field' => 'name', 'terms' => 'featured', 'operator' => 'IN', ); $args = array( 'post_type' => 'product', 'post_status' => 'publish', 'ignore_sticky_posts' => 1, 'posts_per_page' => $atts['per_page'], 'orderby' => $atts['orderby'], 'order' => $atts['order'], 'meta_query' => $meta_query, 'tax_query' => $tax_query, );
See woocommerce/includes/class-wc-shortcodes.php
-
Genau das,wonachichgesucht habe!Just what I was looking for!
- 1
- 2018-05-10
- joshkrz
-
Auchfür Woocommerce 3.0empfehlen sie die Verwendung von "wc_placeholder_img_src" anstelle von "woocommerce_placeholder_img_src".Also for Woocommerce 3.0, they recommend using `wc_placeholder_img_src` instead of `woocommerce_placeholder_img_src`.
- 0
- 2018-05-25
- Robotnicka
-
- 2017-12-24
Ausgewählte Produkte werdenin WooCommerce 3 wiederholt
<ul class="products"> <?php $args = array( 'post_type' => 'product', 'posts_per_page' => 12, 'tax_query' => array( array( 'taxonomy' => 'product_visibility', 'field' => 'name', 'terms' => 'featured', ), ), ); $loop = new WP_Query( $args ); if ( $loop->have_posts() ) { while ( $loop->have_posts() ) : $loop->the_post(); wc_get_template_part( 'content', 'product' ); endwhile; } else { echo __( 'No products found' ); } wp_reset_postdata(); ?>
Featured Products Loop in WooCommerce 3
<ul class="products"> <?php $args = array( 'post_type' => 'product', 'posts_per_page' => 12, 'tax_query' => array( array( 'taxonomy' => 'product_visibility', 'field' => 'name', 'terms' => 'featured', ), ), ); $loop = new WP_Query( $args ); if ( $loop->have_posts() ) { while ( $loop->have_posts() ) : $loop->the_post(); wc_get_template_part( 'content', 'product' ); endwhile; } else { echo __( 'No products found' ); } wp_reset_postdata(); ?>
-
- 2018-05-24
Laut WooCommerce Wiki :
Das Erstellenbenutzerdefinierter WP_Queries oder Datenbankabfragen [zum Abrufen von Produkten] kann Ihren Codein zukünftigen Versionen von WooCommercebeschädigen ,wenn Datenfüreine bessere Leistungin Richtungbenutzerdefinierter Tabellen verschoben werden.
WooCommercebefürwortet die Verwendung von
wc_get_products()
oderWC_Product_Query()
anstelle vonWP_Query()
oderget_posts()
.Ich habeeinen Beitragmit dem Codegeschrieben,mit demich hier daserreicht habe,was Sie wollen: https://cfxdesign.com/create-a-custom-woocommerce-product-loop-the-right-way/
According to the WooCommerce Wiki:
Building custom WP_Queries or database queries [to retrieve products] is likely to break your code in future versions of WooCommerce as data moves towards custom tables for better performance.
WooCommerce advocates using
wc_get_products()
orWC_Product_Query()
instead ofWP_Query()
orget_posts()
.I've written a post with the code I used to achieve what you want here: https://cfxdesign.com/create-a-custom-woocommerce-product-loop-the-right-way/
-
Entschuldigung,ohnegeschriebenen Code zu sehen,istes schwer,Ihren Artikel zu verstehen.Können Siebitte eine Codierung hinzufügen?sorry, without seeing some written code, it is hard to understand your article. Can you please include some coding ?
- 0
- 2019-06-05
- HOY
-
@HOY daseingebettete Plugin war kaputt;Esistjetztbehoben und Sie können den Code sehen!@HOY the embed plugin was broken; it's fixed now and you can see the code!
- 0
- 2019-06-05
- cfx
-
Vielen Dank,alsichnach Lösungen suchte,habeichmir diese unten ausgedacht.Ichbin mirnicht sicher,wiees sich von Ihrem unterscheidet,daich Ihrnicht vollständig überprüfen konnte,aberesist sehr kurz und hatmirbei einerbenutzerdefinierten Produktschleifegeholfen.https://www.kathyisawesome.com/woocommerce-modifying-product-query/thank you, while looking for solutions, I came up with this one below. I am not sure how it differs from yours since I was not able to check yours throughly but it is very short and helped me with a custom product loop. https://www.kathyisawesome.com/woocommerce-modifying-product-query/
- 0
- 2019-06-05
- HOY
-
- 2018-04-28
Ich weiß,dass dies ziemlich altist,aberich habegeradeeine alternative Lösung hier geteilt,undich denke,sie kann helfendiejenigen,die dieses Thema aucherreichen.
Anstatt
meta_query
odertax_query
zu verwenden,können Sie wc_get_featured_product_ids () auch:$args = array( 'post_type' => 'product', 'posts_per_page' => 6, 'orderby' => 'date', 'order' => 'DESC', 'post__in' => wc_get_featured_product_ids(), ); $query = new WP_Query( $args );
Ich hoffees hilft!
I know this is quite old, but I've just shared an alternative solution here and I think it can help those reaching this topic too.
Instead of using
meta_query
ortax_query
, you can use wc_get_featured_product_ids() too:$args = array( 'post_type' => 'product', 'posts_per_page' => 6, 'orderby' => 'date', 'order' => 'DESC', 'post__in' => wc_get_featured_product_ids(), ); $query = new WP_Query( $args );
I hope it helps!
-
- 2018-09-26
Basierend auf: https://github.com/woocommerce/woocommerce/wiki/wc_get_products-and-WC_Product_Query
Ich würde versuchen:
außerhalb der Schleife:
$args = array ( 'limit' => 6, 'orderby' => 'title', 'order' => 'ASC', 'category' => $club_cat, 'stock_status' => 'instock', 'featured' => true, ); $products = wc_get_products( $args );
in der Schleife:
$query = new WC_Product_Query( array( 'limit' => 6, 'orderby' => 'title', 'order' => 'ASC', 'category' => $club_cat, 'stock_status' => 'instock', 'featured' => true, 'return' => 'ids', ) ); $products = $query->get_products();
Based on: https://github.com/woocommerce/woocommerce/wiki/wc_get_products-and-WC_Product_Query
I would try:
outside loop:
$args = array ( 'limit' => 6, 'orderby' => 'title', 'order' => 'ASC', 'category' => $club_cat, 'stock_status' => 'instock', 'featured' => true, ); $products = wc_get_products( $args );
in the loop:
$query = new WC_Product_Query( array( 'limit' => 6, 'orderby' => 'title', 'order' => 'ASC', 'category' => $club_cat, 'stock_status' => 'instock', 'featured' => true, 'return' => 'ids', ) ); $products = $query->get_products();
-
- 2020-07-12
Benutzer sollten wc_get_products verwenden,da laut woocommerce dies die Standardmethode zum Abrufen von Produktenist. wc_get_products verfügt überein Argument,dasnur auftruegesetzt werdenmuss. Der Codeist alsoeinfach unten.
<?php // Display featured products by category. on this case its "shirts" which is the slug of the category. $query_args = array( 'featured' => true, 'category' => array( 'shirts' ), ); $products = wc_get_products( $query_args ); global $post; $columns = wc_get_loop_prop( 'columns' ); ?> <div class="woocommerce columns-<?php echo esc_attr( $columns ); ?>"> <?php woocommerce_product_loop_start(); foreach ($products as $product) { $post = get_post($product->get_id()); setup_postdata($post); wc_get_template_part('content', 'product'); } wp_reset_postdata(); woocommerce_product_loop_end(); ?> </div>
Den vollständigen Beitragfinden Sie hier: https://jameshwartlopez.com/plugin/get-Featured-Produkte-einer-Kategorie/
People should start using wc_get_products because woocommerce said this is the standard way of retrieving product. wc_get_products has an argument featured which just needs to be set to true. So the code is simply below.
<?php // Display featured products by category. on this case its "shirts" which is the slug of the category. $query_args = array( 'featured' => true, 'category' => array( 'shirts' ), ); $products = wc_get_products( $query_args ); global $post; $columns = wc_get_loop_prop( 'columns' ); ?> <div class="woocommerce columns-<?php echo esc_attr( $columns ); ?>"> <?php woocommerce_product_loop_start(); foreach ($products as $product) { $post = get_post($product->get_id()); setup_postdata($post); wc_get_template_part('content', 'product'); } wp_reset_postdata(); woocommerce_product_loop_end(); ?> </div>
See full post here: https://jameshwartlopez.com/plugin/get-featured-products-of-a-category/
-
- 2016-07-11
Wenn Sieeinen Blickin die Datenbankin der Tabelle
wp_postmeta
werfen,sehen Sie,dassmeta_key
_featured
undmeta_value ist
yes
oderno
. Schreiben Sie also anstelle des Werts0
oder1
yes
odernein
& lt ;?php $ q=neue WP_Query ([ 'post_type'=>'Produkt', 'stock'=>1, 'Showposts'=>3, 'orderby'=>'Datum', 'order'=>'DESC', 'meta_query'=>[ ['key'=>'_featured','value'=>'Ja' ] ]] ]); if ($ q- > have_posts ()): while ($ q- > have_posts ()): $ q- >the_post (); //Produktinfo anzeigen in der Zwischenzeit;wp_reset_query (); endif; >
if you take a look in the database in
wp_postmeta
table you will seemeta_key
will be_featured
andmeta_value
will beyes
orno
so instead of value0
or1
writeyes
orno
<?php $q = new WP_Query([ 'post_type' => 'product', 'stock' => 1, 'showposts' => 3, 'orderby' => 'date', 'order' => 'DESC', 'meta_query' => [ ['key' => '_featured', 'value' => 'yes' ] ] ]); if ( $q->have_posts() ) : while ( $q->have_posts() ) : $q->the_post(); // display product info endwhile; wp_reset_query(); endif; ?>
-
- 2019-04-03
<ul class="products"> <?php $args = array( 'post_type' => 'product', 'posts_per_page' => 12, 'tax_query' => array( array( 'taxonomy' => 'product_visibility', 'field' => 'name', 'terms' => 'featured', ), ), ); $loop = new WP_Query( $args ); if ( $loop->have_posts() ) { while ( $loop->have_posts() ) : $loop->the_post(); echo '<p>'.get_the_title().'</p>'; endwhile; } else { echo __( 'No products found' ); } wp_reset_postdata(); ?> </ul><!--/.products-->
<ul class="products"> <?php $args = array( 'post_type' => 'product', 'posts_per_page' => 12, 'tax_query' => array( array( 'taxonomy' => 'product_visibility', 'field' => 'name', 'terms' => 'featured', ), ), ); $loop = new WP_Query( $args ); if ( $loop->have_posts() ) { while ( $loop->have_posts() ) : $loop->the_post(); echo '<p>'.get_the_title().'</p>'; endwhile; } else { echo __( 'No products found' ); } wp_reset_postdata(); ?> </ul><!--/.products-->
-
Bitte ** [bearbeiten] Sie Ihre Antwort ** undfügen Sieeine Erklärung hinzu: ** Warum ** könnte das das Problem lösen?Please **[edit] your answer**, and add an explanation: **why** could that solve the problem?
- 0
- 2019-04-03
- fuxia
Ichmöchte 6 vorgestellte Produkte ausmeinem Woocommerce-Shop aufmeiner Vorlage home-page.php anzeigen. Nacheinigen Recherchen stellteichfest,dass der richtige Weg dazueine benutzerdefinierte Schleife war (ichmöchte keine Shortcodes verwenden,daich zusätzliche Klassenfür das Styling usw. hinzufügenmöchte). Außerdem stellteichfest,dass der Schlüssel,den Woocommercefür die verwendet vorgestellte Produkte sind "_featured". Ich habe denfolgenden Code zusammengestellt,um alle Produkte anzuzeigen,dieich als Produktein meinem Shop ausgewählt habe,aberesfunktioniertnicht ... Jede Hilfeist willkommen.