2014-11-17 3 views
0

В приведенном ниже коде есть foreach, что было бы лучшим способом его изменить, чтобы он мог проверить $instock. Я попытался с помощью if заявление внутри foreach но тогда он не видит петлю на endforeach

:

$args = array('posts_per_page' => 4, 'post_type' => 'product','meta_key' => '_featured','meta_value' => 'yes','orderby' =>'rand','order' => 'DESC'); 

$myposts = get_posts($args); 

foreach ($myposts as $post) : 
    setup_postdata($post); 
    $product = new WC_Product(get_the_ID()); 
    $price = $product->price; 
    $instock = $product->is_in_stock(); 
?> 
    <div class="col-sm-6 col-md-3"> 
     <div class="thumbnail Product_Box"> 
      <a href="<?php the_permalink()?>"><?php the_post_thumbnail();?></a> 
      <div class="caption"> 
       <h4><?php the_title()?><br /> 
        <span class="text-color">$<?php echo $price; ?></span> 
       </h4> 
      </div> 
     </div> 
    </div> 

<?php endforeach; 
wp_reset_postdata();?> 

ответ

1

Чистое решение было бы пропустить продукт, если его нет в наличии. Таким образом, вы получите следующее.

$args = array('posts_per_page' => 4, 'post_type' => 'product','meta_key' => '_featured','meta_value' => 'yes','orderby' =>'rand','order' => 'DESC'); 

$myposts = get_posts($args); 

foreach ($myposts as $post) : 
    setup_postdata($post); 
    $product = new WC_Product(get_the_ID()); 
    $price = $product->price; 
    $instock = $product->is_in_stock(); 

    if (!$instock) { 
     continue; 
    } 
?> 
    <div class="col-sm-6 col-md-3"> 
     <div class="thumbnail Product_Box"> 
      <a href="<?php the_permalink()?>"><?php the_post_thumbnail();?></a> 
      <div class="caption"> 
       <h4><?php the_title()?><br /> 
        <span class="text-color">$<?php echo $price; ?></span> 
       </h4> 
      </div> 
     </div> 
    </div> 

<?php endforeach; 
wp_reset_postdata();?> 
+0

Спасибо, я просто устал это, и он просто ничего –

+0

могли бы вы сказать мне, что $ Instock содержит продукт, который не на складе не отображается? –

+0

Хорошо, у меня был прорыв еще не 100% - спасибо за то, что вышли в правильном направлении! Я обнаружил, что существует '$ product-> stock_status;', который я теперь использую для $ instock, это дает мне результат 'instock' и' outofstock', но я все равно получаю пустой цикл, если я использую IF –