php - 仅在具有 Elementor 的小部件上隐藏缺货的 WooCommerce 产品
问题描述
我正在尝试在 Elementor 中添加产品存档小部件,但在此小部件中,必须特别隐藏“缺货”产品。
我尝试修改此代码,但没有成功。
add_filter( 'woocommerce_product_query_meta_query', 'shop_only_instock_products', 10, 2 );
function shop_only_instock_products( $meta_query, $query ) {
// Only on shop archive pages
if( '#outst' ) return $meta_query;
$meta_query[] = array(
'key' => '_stock_status',
'value' => 'outofstock',
'compare' => '!='
);
return $meta_query;
}
有任何想法吗?
elementor的侧边栏:
解决方案
对于小部件,您应该改用woocommerce_products_widget_query_args
钩子。要隐藏缺货产品,有两种方法:
1)。使用元查询:
add_filter( 'woocommerce_products_widget_query_args', 'custom_products_widget_query_arg', 10, 1 );
function custom_products_widget_query_arg( $query_args ) {
if( ! is_admin() ) {
$query_args['meta_query'][] = array(
'key' => '_stock_status',
'value' => 'outofstock',
'compare' => '!='
);
}
return $query_args;
}
2)。或使用税务查询:
add_filter( 'woocommerce_products_widget_query_args', 'custom_products_widget_query_arg', 10, 1 );
function custom_products_widget_query_arg( $query_args ) {
if( ! is_admin() ) {
$query_args['tax_query'][] = array(
'taxonomy' => 'product_visibility',
'field' => 'name',
'terms' => array('outofstock'),
'operator' => 'NOT IN'
);
}
return $query_args;
}
代码在您的活动子主题(或活动主题)的functions.php 文件中。两者都可以工作。
有关的:
推荐阅读
- sql - 如何截断和加载表中的部分数据?
- django - 如何从使用 django 中的 for 循环创建的表中获取日期输入?
- github - Swashbuckle.AspNetCore.Filters - 通过 XML 注释添加示例
- python - 安装 Odoo 要求时如何处理“给定双重要求”错误
- git - git 切换分支并拉取
- postgresql - 无法从外部登录到 Kubernetes 集群内部的 Postgres
- angular - 为什么下一行没有被单元测试覆盖?
- spring-boot - Spring Boot 微服务负载均衡与云负载均衡
- javascript - JavaScript:检测空格并计算字符长度
- javascript - LitElement 无限滚动重新定位问题