在woodmart主题中隐藏缺货产品(元素或网格或旋转木马)



大家好,我用这个代码

add_action( 'woocommerce_before_shop_loop_item_title', 'wk_out_of_stock_variations_loop' );
function wk_out_of_stock_variations_loop(){
global $product;
if ( $product->product_type == 'variable' ) { // if variation product is out of stock
$available = $product->get_available_variations();
if ( $available )foreach ( $available as $instockvar ) {
if ( isset($instockvar['attributes']['attribute_pa_megethos'] ) ) {

if ( ( $instockvar['attributes']['attribute_pa_megethos'] == $_GET['filter_megethos'] ) && (!$instockvar['max_qty']>0) ) {
global $product;
$id = $product->get_id();
echo "<style>.post-$id{display: none}</style>";
}

}
}
}   
if ( !$product->is_in_stock() ) { // if single product is out of stock
global $product;
$id = $product->get_id();
echo "<style>.post-$id{display: none}</style>";
}
}

这个代码运行良好,但隐藏了产品,但它们的位置仍在页面上,但我不想显示不存在的产品并替换那些现有的产品

您应该从Wooccommerce->设置->库存->quot;从目录中隐藏缺货项目";

您可以使用此代码。在修改后的代码中,我添加了一个额外的步骤,在将缺货产品显示在滑块或网格循环中之前,将其从$related_products数组中排除。

<?php
/**
* Related Products
*
* This template can be overridden by copying it to yourtheme/woocommerce/single-product/related.php.
*
* HOWEVER, on occasion WooCommerce will need to update template files and you
* (the theme developer) will need to copy the new files to your theme to
* maintain compatibility. We try to do this as little as possible, but it does
* happen. When this occurs the version of the template file will be bumped and
* the readme will list any important changes.
*
* @see         https://docs.woocommerce.com/document/template-structure/
* @package     WooCommerce/Templates
* @version     3.9.0
*/
if (!defined('ABSPATH')) {
exit;
}
$related_product_view = woodmart_get_opt('related_product_view');
if ($related_products) : ?>
<div class="related-products">
<?php
$heading = apply_filters('woocommerce_product_related_products_heading', __('Related products', 'woocommerce'));
if ($heading) :
?>
<h3 class="title slider-title"><?php echo esc_html($heading); ?></h3>
<?php endif; ?>
<?php
woodmart_enqueue_product_loop_styles(woodmart_get_opt('products_hover'));
if ($related_product_view == 'slider') {
$slider_args = array(
'slides_per_view' => (woodmart_get_opt('related_product_columns')) ? woodmart_get_opt('related_product_columns') : apply_filters('woodmart_related_products_per_view', 4),
'img_size' => 'woocommerce_thumbnail',
'products_bordered_grid' => woodmart_get_opt('products_bordered_grid'),
'products_bordered_grid_style' => woodmart_get_opt('products_bordered_grid_style'),
'products_with_background' => woodmart_get_opt('products_with_background'),
'products_shadow' => woodmart_get_opt('products_shadow'),
'products_color_scheme' => woodmart_get_opt('products_color_scheme'),
'custom_sizes' => apply_filters('woodmart_product_related_custom_sizes', false),
'product_quantity' => woodmart_get_opt('product_quantity')
);
woodmart_set_loop_prop('products_view', 'carousel');
// Exclude out-of-stock products
$related_products = array_filter($related_products, function ($product) {
return $product->is_in_stock();
});
if (!empty($related_products)) {
echo woodmart_generate_posts_slider($slider_args, false, $related_products);
}
} elseif ($related_product_view == 'grid') {
woodmart_set_loop_prop('products_columns', woodmart_get_opt('related_product_columns'));
woodmart_set_loop_prop('products_different_sizes', false);
woodmart_set_loop_prop('products_masonry', false);
woodmart_set_loop_prop('products_view', 'grid');
// Exclude out-of-stock products
$related_products = array_filter($related_products, function ($product) {
return $product->is_in_stock();
});
if (!empty($related_products)) {
woocommerce_product_loop_start();
foreach ($related_products as $related_product) {
$post_object = get_post($related_product->get_id());
setup_postdata($GLOBALS['post'] = $post_object);
wc_get_template_part('content', 'product');
}
woocommerce_product_loop_end();
woodmart_reset_loop();
if (function_exists('woocommerce_reset_loop')) {
woocommerce_reset_loop();
}
}
}
?>
</div>
<?php endif;
wp_reset_postdata();

最新更新