如何根据产品类别隐藏缺货商品
how to hide out of stock items based on product category
我已经搜索了几个小时但无济于事,我已经尝试组合有效的代码
1.Hiding 仅商店页面缺货产品:
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( is_admin() || is_search() || ! is_shop() ) return $meta_query;
$meta_query[] = array(
'key' => '_stock_status',
'value' => 'outofstock',
'compare' => '!='
);
return $meta_query;
}
和
根据产品类别隐藏产品:
add_filter( 'woocommerce_product_query_tax_query', 'custom_product_query_tax_query', 10, 2 );
function custom_product_query_tax_query( $tax_query, $query ) {
if( is_admin() ) return $tax_query;
// HERE Define your product category SLUGs to be excluded
$terms = array( 'ukategorisert' ); // SLUGs only
// The taxonomy for Product Categories
$taxonomy = 'product_cat';
$tax_query[] = array(
'taxonomy' => $taxonomy,
'field' => 'slug', // Or 'name' or 'term_id'
'terms' => $terms,
'operator' => 'NOT IN', // Excluded
);
return $tax_query;
}
并尝试将它们组合成下面的代码,但没有成功。 :
add_filter( 'woocommerce_product_query_meta_query', 'prodcat', 10, 2 );
function prodcat( $meta_query, $query ) {
// HERE Define your product category SLUGs to be excluded
$terms = array( 'pouch' ); // SLUGs only
// The taxonomy for Product Categories
$taxonomy = 'product_cat';
$tax_query[] = array(
'taxonomy' => $taxonomy,
'field' => 'slug', // Or 'name' or 'term_id'
'terms' => $terms,
'operator' => 'NOT IN', // Excluded
);
return $tax_query;
$meta_query[] = array(
'key' => '_stock_status',
'value' => 'outofstock',
'compare' => '!='
);
return $meta_query;
}
请提供一些指导和知识,以帮助根据产品类别隐藏缺货产品。
在此先感谢您。
我没有意识到我的问题可能有歧义或不清楚。但是好吧,我调整了代码并设法获得了我想要的相同结果,即不是在全球范围内而是基于产品类别隐藏缺货产品。
这是使用来自@loictheaztec 的代码完成的。他的代码:
add_action( 'woocommerce_before_add_to_cart_form', 'woocommerce_sold_out_dropdown' );
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( is_admin() || is_search() || ! is_shop() ) return $meta_query;
$meta_query[] = array(
'key' => '_stock_status',
'value' => 'outofstock',
'compare' => '!='
);
return $meta_query;
}
他上面的代码是只在商店页面上隐藏缺货产品(参考:)
基本上,我使用他的代码根据特定页面隐藏缺货产品,在特定页面上,我使用 woocommerce 的短代码来显示特定产品类别。所以你走了,我已经设法根据产品类别隐藏缺货产品。尽管我必须承认,为了达到目标有点拐弯抹角。但是好吧,只要工作完成。 :)
代码如下:
add_filter( 'woocommerce_product_query_meta_query', 'prodcat', 10, 2 );
function prodcat( $meta_query, $query ) {
if( is_admin() || is_search() || ! is_page( 9173 ) ) return $meta_query;
// is_page ( 'id of page you want to hide the out of stock products, use array() for multiple pages') //
$meta_query[] = array(
'key' => '_stock_status',
'value' => 'outofstock',
'compare' => '!='
);
return $meta_query;
}
我已经搜索了几个小时但无济于事,我已经尝试组合有效的代码
1.Hiding 仅商店页面缺货产品:
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( is_admin() || is_search() || ! is_shop() ) return $meta_query;
$meta_query[] = array(
'key' => '_stock_status',
'value' => 'outofstock',
'compare' => '!='
);
return $meta_query;
}
和
根据产品类别隐藏产品:
add_filter( 'woocommerce_product_query_tax_query', 'custom_product_query_tax_query', 10, 2 ); function custom_product_query_tax_query( $tax_query, $query ) { if( is_admin() ) return $tax_query; // HERE Define your product category SLUGs to be excluded $terms = array( 'ukategorisert' ); // SLUGs only // The taxonomy for Product Categories $taxonomy = 'product_cat'; $tax_query[] = array( 'taxonomy' => $taxonomy, 'field' => 'slug', // Or 'name' or 'term_id' 'terms' => $terms, 'operator' => 'NOT IN', // Excluded ); return $tax_query; }
并尝试将它们组合成下面的代码,但没有成功。 :
add_filter( 'woocommerce_product_query_meta_query', 'prodcat', 10, 2 );
function prodcat( $meta_query, $query ) {
// HERE Define your product category SLUGs to be excluded
$terms = array( 'pouch' ); // SLUGs only
// The taxonomy for Product Categories
$taxonomy = 'product_cat';
$tax_query[] = array(
'taxonomy' => $taxonomy,
'field' => 'slug', // Or 'name' or 'term_id'
'terms' => $terms,
'operator' => 'NOT IN', // Excluded
);
return $tax_query;
$meta_query[] = array(
'key' => '_stock_status',
'value' => 'outofstock',
'compare' => '!='
);
return $meta_query;
}
请提供一些指导和知识,以帮助根据产品类别隐藏缺货产品。
在此先感谢您。
我没有意识到我的问题可能有歧义或不清楚。但是好吧,我调整了代码并设法获得了我想要的相同结果,即不是在全球范围内而是基于产品类别隐藏缺货产品。
这是使用来自@loictheaztec 的代码完成的。他的代码:
add_action( 'woocommerce_before_add_to_cart_form', 'woocommerce_sold_out_dropdown' );
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( is_admin() || is_search() || ! is_shop() ) return $meta_query;
$meta_query[] = array(
'key' => '_stock_status',
'value' => 'outofstock',
'compare' => '!='
);
return $meta_query;
}
他上面的代码是只在商店页面上隐藏缺货产品(参考:
基本上,我使用他的代码根据特定页面隐藏缺货产品,在特定页面上,我使用 woocommerce 的短代码来显示特定产品类别。所以你走了,我已经设法根据产品类别隐藏缺货产品。尽管我必须承认,为了达到目标有点拐弯抹角。但是好吧,只要工作完成。 :)
代码如下:
add_filter( 'woocommerce_product_query_meta_query', 'prodcat', 10, 2 );
function prodcat( $meta_query, $query ) {
if( is_admin() || is_search() || ! is_page( 9173 ) ) return $meta_query;
// is_page ( 'id of page you want to hide the out of stock products, use array() for multiple pages') //
$meta_query[] = array(
'key' => '_stock_status',
'value' => 'outofstock',
'compare' => '!='
);
return $meta_query;
}