2017-08-30 3 views
3

Ich muss ausschließen Nicht vorrätig Artikel aus angezeigt, wenn die Woocommerce Recent Products Shortcode auf meiner Startseite verwendet wird.Zeige nur "auf Lager" Produkte in WooCommerce Neue Produkte shortcode

[recent_products] 

Ist es möglich, eine Regel wie hide_outofstock="true" oder etwas in diese Richtung zu schaffen Nicht vorrätige Produkte zeigen, zu stoppen?

Ich habe im Web nach Ideen gesucht, wie ich dieses Problem angehen kann, und ich bin überhaupt kein Programmierer, aber normalerweise kann ich etwas frankenstein, um solche Probleme zu umgehen. Aber jetzt bin ich ratlos. Alle und jede Hilfe wird sehr geschätzt.

  • kann ich nicht verbergen nur alle Nicht vorrätige Produkte über die WooCommerce Einstellungen Seite, wie sie in anderen Bereichen der Website sichtbar sein müssen.

  • Mit einem Code, der "verdeckt" anstatt "nicht ziehen" aus dem Lager Produkte zeigt nur leere Räume, wo die Produkte gezeigt worden wären.

  • Muss dynamisch arbeiten, da sich die Lagerbestände häufig ändern - die manuelle Einschränkung nach Produkt-ID dauert zu lange.

Antwort

0

Nach etwas Suche in WC_Shortcodes Quellcode-Klasse, hier der richtige Weg ist, es zu tun:

add_filter('woocommerce_shortcode_products_query', function($query_args, $atts, $loop_name){ 
    if($loop_name == 'recent_products'){ 
     $query_args['meta_query'] = array(array(
      'key'  => '_stock_status', 
      'value' => 'instock', 
      'compare' => 'LIKE', 
     )); 
    } 
    return $query_args; 
}, 10, 3); 

-Code geht in function.php Datei Ihres aktiven Kind Thema (oder Thema) oder auch in jeder Plugin-Datei.

Getestet auf WooCommerce 3+ und funktioniert.

+0

brillant gearbeitet! Vielen Dank für deine Hilfe :) –

1

Nur ein kleines Update. Der obige Code funktionierte gut mit einfachen Produkten, aber Variationen mit einer Variation im Lager und einer anderen Variante, die nicht auf Lager waren, wurden nicht angezeigt, wenn der Shortcode [recent_products] verwendet wurde. Ich denke, ich habe das behoben, indem ich den Wert auf outofstock ändere und mit NOT LIKE vergleiche.

add_filter('woocommerce_shortcode_products_query', function($query_args, $atts, $loop_name){ 
 
    if($loop_name == 'recent_products'){ 
 
     $query_args['meta_query'] = array(array(
 
      'key'  => '_stock_status', 
 
      'value' => 'outofstock', 
 
      'compare' => 'NOT LIKE', 
 
     )); 
 
    } 
 
    return $query_args; 
 
}, 10, 3);

0

In folgendem Code in functions.php Datei gewählten Themas

function custom_woocommerce_shortcode_products_query($args) { 
    if ('yes' == get_option('woocommerce_hide_out_of_stock_items')) { 
    $args['meta_query'][] = array(
     'key' => '_stock_status', 
     'value' => 'instock', 
     'compare' => 'IN' 
    ); 
    } 
    return $args; 
} 

add_filter('woocommerce_shortcode_products_query', 'custom_woocommerce_shortcode_products_query'); 
Verwandte Themen