WP_Query: Versteckte Produkte von der WooCommerce-Produktliste ausschließen
-
-
Ich würdebemerken,dass dieser Codeirgendwann katastrophalfehlschlagen wird,weil `posts_per_page` auf` -1`gesetztist.Nur wenige Server würden diesen Code verarbeiten,wenn 1000 Posts vorhanden sind,egal 20.000.Multiplizieren Sie diesmit der Anzahl der Besucher,die auf Ihrer Website ankommenI would note that this code will eventually fail catastrophically due to the `posts_per_page` being set to `-1`. Few servers would handle this code when there are 1000 posts, nevermind 20,000. Multiply that by however many visitors arrive on your site
- 0
- 2016-12-03
- Tom J Nowell
-
2 Antworten
- Stimmen
-
- 2016-06-30
Wichtig: Folgendesfunktioniertnurfür WooCommerce-Versionen unter 3.0.Eine aktuellere Antwortfinden Siein der anderen Antwort von kalle .
WooCommerce speichert diese Daten als
metadata
,sodass Sieeinen Meta Query gegen den Namen_visibility
.Soetwas wie:'meta_query' => array( array( 'key' => '_visibility', 'value' => 'hidden', 'compare' => '!=', ) )
Dadurch werden alle Beiträge abgerufen,die keine Meta-
_visibility
haben,diehidden
entspricht.Important: The following only works for WooCommerce versions less than 3.0. For a more up-to-date answer please see the other answer by kalle.
WooCommerce save this data as
metadata
so you'll need to run a Meta Query against the name_visibility
. Something like:'meta_query' => array( array( 'key' => '_visibility', 'value' => 'hidden', 'compare' => '!=', ) )
This will pull all posts that do not have meta
_visibility
equal tohidden
.-
Perfekt.Das habeichgebraucht.Für alle,dienach dieser Antwort suchen,ist hier die vollständige Abfrage zu den obengenannten. ` -1,'post_type'=> 'product','orderby'=> 'menu-order','order'=> 'asc','meta_query'=> array ( Array ( 'key'=> '_visibility', 'Wert'=> 'versteckt', 'compare'=> '!=', ) )); $ wc_query=new WP_Query ($params); ?> `Perfect. That's what I needed. For anyone who searches for this answer, here is the full query to the above. ` -1, 'post_type' => 'product', 'orderby' => 'menu-order', 'order' => 'asc', 'meta_query' => array( array( 'key' => '_visibility', 'value' => 'hidden', 'compare' => '!=', ) )); $wc_query = new WP_Query($params); ?>`
- 0
- 2016-06-30
- Peter Ingersoll
-
@PeterIngersoll FYI,Sie können diese Antwort als akzeptiertmarkieren,um zukünftigen Besuchern zu zeigen,was auchfür Siefunktioniert hat :) Links von Howdys Antwortbefindet sichein Häkchen.Lesen Sie hiermehr: http://wordpress.stackexchange.com/help/someone-answers@PeterIngersoll FYI, you can mark this answer as accepted to show future visitors what worked for you as well :) There's a check mark on the left of Howdy's answer. Read more here: http://wordpress.stackexchange.com/help/someone-answers
- 0
- 2016-07-05
- Tim Malone
-
- 2017-04-06
Ab Woocommerce 3. Die Sichtbarkeitist wurdein taxonomy anstelle vonmeta geändert.Siemüssen also diemeta_queryin tax_query ändern. Umnur sichtbare Produkte anzuzeigen,
'tax_query' => array( array( 'taxonomy' => 'product_visibility', 'field' => 'name', 'terms' => 'exclude-from-catalog', 'operator' => 'NOT IN', ), ),
und Beispielefürempfohlene Produkte
'tax_query' => array( array( 'taxonomy' => 'product_visibility', 'field' => 'name', 'terms' => 'featured', ), ),
Mögliche Begriffe: "Von der Suche ausschließen","Vom Katalog ausschließen","Vorgestellt","Nicht vorrätig".
As of Woocommerce 3. Visibility is changed to taxonomy instead of meta. So you need to change the meta_query to tax_query. To show only visible products,
'tax_query' => array( array( 'taxonomy' => 'product_visibility', 'field' => 'name', 'terms' => 'exclude-from-catalog', 'operator' => 'NOT IN', ), ),
and examples for Featured Products
'tax_query' => array( array( 'taxonomy' => 'product_visibility', 'field' => 'name', 'terms' => 'featured', ), ),
Possible terms: 'exclude-from-search', 'exclude-from-catalog', 'featured', 'outofstock'.
Hierist der Code: