Woocommerce:显示所有产品,不包括购物车

时间:2016-02-17 21:27:06

标签: php wordpress woocommerce

我正在尝试显示所有可用的产品,不包括购物车中当前的产品。我尝试使用在互联网上找到的一些方法,但大多数都使用过滤器,因此我无法排除包含购物车的内容。

我显示库存中所有产品的示例代码如下:

    <?php
    $params = array(
        'posts_per_page' => 999,
        'post_type' => 'product',
        'meta_query' => array(
            array(
                        'key' => '_stock_status',
                        'value' => 'instock'
                    )
        )
    );

    $wc_query = new WP_Query($params);

?>

<ul>
<?php
  if ($wc_query->have_posts()) :
    while ($wc_query->have_posts()) :
      $wc_query->the_post();
      $product = new WC_Product(get_the_ID());
?>
  <li>
  <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
<?php
    the_post_thumbnail();
    the_excerpt();
    echo $product->get_price_html();
    echo $product->get_sku();
?>
  </li>

<?php
    endwhile; 

  wp_reset_postdata(); ?>
  else:
?>
  <li>
  <?php _e( 'No Products' ); ?>
  </li>

  <?php endif; ?>
</ul>

有关如何使其工作的任何提示?我只想到一件事 - 检查购物车中的SKU。

1 个答案:

答案 0 :(得分:0)

得到了解决:

global $woocommerce; 
$my_cart = array();

$items = $woocommerce->cart->get_cart();

foreach($items as $item => $values) { 
//print_r($values); 
$_product = $values['data']->post;

$my_cart[] = $_product->ID;
}

//print_r($my_cart);

$params = array(
  'posts_per_page' => 999, 
  'post_type' => 'product',
  'meta_query' => array(
    array(
      'key' => '_stock_status',
      'value' => 'instock'
      )
  ) 
);

$wc_query = new WP_Query($params);

?>

<ul>

<?php

  if ($wc_query->have_posts()) :
    while ($wc_query->have_posts()) :
      $wc_query->the_post(); 
      $product = new WC_Product(get_the_ID()); 


if (!in_array($product->id, $my_cart)){
?>

<li>
<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
<?php 

    the_post_thumbnail();
    the_excerpt();
    echo $product->get_price_html(); 
    echo $product->get_sku();
    echo $product->id;

?>

<form class="cart" method="post" enctype="multipart/form-data">
     <div class="quantity">
          <input type="number" step="1" min="1" max="9" name="quantity" value="1" title="<?php _e('Szt.', 'my-theme'); ?>" class="input-text qty text" size="4">
     </div>  
     <input type="hidden" name="add-to-cart" value="<?php echo esc_attr($product->id); ?>">
     <button type="submit"> <?php echo $product->single_add_to_cart_text(); ?> </button>
</form>


</li>



<?php 
}

    endwhile; 

    wp_reset_postdata(); 

    else:  
?>
<li><?php _e( 'No Products' ); ?></li>
<?php endif; ?>

</ul>