2017-01-25 9 views
0

Я сделал собственный запрос, чтобы получить варианты продуктов, но когда я удаляю продукт, статус изменений останется publish, поэтому он ответит на ошибку 404, если клиент попытался просмотреть измененные варианты продукта. Итак, как я могу фильтровать эти варианты, чтобы получить только те версии, которые опубликовали родительский продукт?Как получить изменения продукта только в том случае, если выпущен родительский продукт

Мой код:

<?php 
$args = ['post_type' => ['product_variation'], 
      'orderby' => 'meta_value_num', 
      'order'  => 'DESC', 
      'post_status'=>'publish', 
      'product_type'=>'variation', 
      'meta_query' => [ 
       [ 
        'key'  => 'attribute_pa_flower-type', 
        'value' => $flower_type, 
        'compare' => '=', 
       ] 
      ] 
     ]; 
?> 

<?php $the_query = new WP_Query($args);?> 

<?php if ($the_query->have_posts()) : ?> 

    <div class="boxes"> 
     <?php while ($the_query->have_posts()) : $the_query->the_post(); ?> 
     ... 

ответ

1

Есть некоторые вещи, как это:

//to hold the published product id which has vriation. 
$has_variable_ids = []; 

$args_parent = [ 
    'post_type' => ['product'], 
    'post_status' => 'publish', 
    'posts_per_page' => -1 
]; 

$pubished_post = new WP_Query($args_parent); 
if (!empty($pubished_post->posts)) 
{ 
    foreach ($pubished_post->posts as $post) 
    { 
     $_product = wc_get_product($post->ID); 
     if ($_product->is_type('variable')) 
     { 
      // Product has variations 
      $has_variable_ids[] = $post->ID; 
     } 
    } 
} 


$args = [ 
    'post_type' => ['product_variation'], 
    'orderby' => 'meta_value_num', 
    'order' => 'DESC', 
    'post_status' => 'publish', 
    'post_parent__in' => $has_variable_ids, 
    'meta_query' => [ 
     [ 
      'key' => 'attribute_pa_flower-type', 
      'value' => $flower_type, 
      'compare' => '=', 
     ] 
    ] 
]; 

$the_query = new WP_Query($args); 

Пожалуйста, обратите внимание: я have't проверял, но он должен работать.

Надеюсь, это поможет!

+0

Да, это то, что я сделал, наконец, чтобы получить родительский пост для каждого варианта и проверить его статус внутри цикла while, но я изменю свой код на ваш, потому что его более быстрый – Mohammad

+0

я не нашел и функция WooCommerce для этого я так и сделал свое знание WP. –