在 WooCommerce 商店页面中隐藏没有缩略图的产品

Hiding products without thumbnail in WooCommerce shop page

我使用进口商向商店进口数千种产品。虽然我必须在出售商品之前插入商品的图片和描述。

如果没有分配缩略图,我想在商店中隐藏产品。这样,只有在我设置了缩略图后,新产品才会出现在商店中。

我在 header.php 试过这个,但没有成功:

 <?php if($_product->getImage() && $_product->getImage() != 'no_selection'){
?>
 <style>
  /* Css to hide Featured image Div */
 </style>
<?php
}?>

这给了我错误:

Fatal error: Call to a member function getImage() on a non-object

如果 WordPress WooCommerce 产品没有放置缩略图,是否有任何快速方法可以从商店页面隐藏它们?

谢谢

您可以使用挂钩在 woocommerce_product_query 操作中的自定义函数,该挂钩将更改商店查询并且不会在没有图像的情况下在商店页面上显示产品,这方式:

add_action( 'woocommerce_product_query', 'custom_pre_get_posts_query' );
function custom_pre_get_posts_query( $query ) {

    $query->set( 'meta_query', array( array(
       'key' => '_thumbnail_id',
       'value' => '0',
       'compare' => '>'
    )));

}

代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件。

此代码已经过测试并适用于 WooCommerce 2。6.x 和 3.0+

Woo-commerce 通常会在没有缩略图的产品上插入占位符图片。您可以使用 Jquery 轻松定位没有缩略图的产品。

在我的网站上,它放置了一个名为 "placeholder.png" 的 imame,它将位于 site_url()."/wp-content/plugins/woocommerce/assets/images/placeholder.png",站点 url,这是您网站的url.

将 javascript 添加到您的主题中,或者创建一个子主题并将其添加到 functions.php 文件中。

这是代码。

hideproduct.js

jQuery(document).ready(function(){

    jQuery(".products a img.woocommerce-
            placeholder").parents(".product").css("display","none");

})

好吧,您可以省去很多麻烦,并且最初将 post_status 设置为 draft 来导入您的产品,这将导致它们不会在首页上显示。然后,每次您向产品添加图片时(我假设您是通过 WP 后端执行的),您 "publish" 您的产品,因为无论如何您都必须保存它。

如果您有单独的图像导入脚本,您可以从那里将 post_status 设置为 public