2016-08-19 5 views
3

Ich habe mir this question und this one angesehen, aber ich bin immer noch fest.WooCommerce verwandte Produkte gefiltert nach Attribut

Ich habe ein Attribut "status" und ich möchte nur Klassen (Produkte) mit dem Wert von "OPEN" erscheinen. Ich bearbeite die WooCommerce Vorlagendatei related.php.

Hier sind zwei Versionen von Code, die ich ausprobiert habe.

Version 1:

$args = apply_filters('woocommerce_related_products_args', array(
'post_type'   => 'product', 
'ignore_sticky_posts' => 1, 
'no_found_rows'  => 1, 
'posts_per_page'  => $posts_per_page, 
'orderby'    => $orderby, 
'post__in'    => $related, 
'post__not_in'   => array($product->id), 
'meta_query' => array(
    array(
    'key' => 'status', 
    'value' => 'OPEN', 
    ), 
), 
)); 

Version 2:

$key="status"; 
    $value="OPEN"; 
    $query_status = array('meta_key' => $key, 'meta_value' => $value); 
    $meta_query[] = $query_status; 

    $args = apply_filters('woocommerce_related_products_args', array(
    'post_type'   => 'product', 
    'ignore_sticky_posts' => 1, 
    'no_found_rows'  => 1, 
    'posts_per_page'  => $posts_per_page, 
    'orderby'    => $orderby, 
    'post__in'    => $related, 
    'post__not_in'   => array($product->id), 
    'meta_query'   => $meta_query, 
    )); 

    $products     = new WP_Query($args); 

Die erste Version keine verwandten Produkte führt zu zeigen, so bricht er den Code. das zweite hat keine Wirkung.

Wie kann ich dieses Problem lösen?

Danke

+0

@LoicTheAztec, sorry für die Verzögerung bei der Beantwortung, ich habe einen Notfall in der Familie hat und nicht in der Lage gewesen, für Wochen zu arbeiten. Ich hoffe, dass ich bald auf dieses Problem zurück komme und freue mich darauf, Ihren Code zu testen. – schatzkin

+0

Hmm, ich dachte, ich hätte hier eine Antwort geschrieben ... Ich habe den Code getestet und keine Ergebnisse erhalten, auch wenn ich den Parameter 'post__in' => $ entfernt habe. Ich schätze, ich werde es einfach weiter versuchen. – schatzkin

Antwort

0

Okay, ich habe die Antwort! WooCommerce speichert benutzerdefinierte Attribute auf mehrere Arten, aber in diesem Fall musste ich den Begriff Abfrage anstelle der Meta-Abfrage verwenden. Hier ist die letzte Abfrage, wirkt wie ein Zauber:

$args = apply_filters('woocommerce_related_products_args', array(
     'post_type'   => 'product', 
     'ignore_sticky_posts' => 1, 
     'no_found_rows'  => 1, 
     'posts_per_page'  => 4, 
     'orderby'    => $orderby, 
     'post__not_in'   => array($product->id), 
     'tax_query'  =>  array(
       array(
         'taxonomy' => 'pa_status', 
         'field' =>  'slug', 
         'terms' => 'open' 
      ) 
     ) 
)); 
Verwandte Themen