我不想在我的主页上显示“缺货”产品。 我已经尝试了一些WooCommerce挂钩和过滤器来更改产品查询,但是它不起作用。 我还检查了“隐藏缺货”进入woocommerce设置区域。
但是产品仍然出现。发生时,我能得到线索吗?
我尝试使用此过滤器挂钩来更改主要产品查询:
add_action( 'pre_get_posts', 'custom_pre_get_posts_query' );
function custom_pre_get_posts_query( $q ) {
if ( ! $q->is_main_query() ) return;
if ( ! $q->is_post_type_archive() ) return;
if ( ! is_admin() ) {
$q->set( 'meta_query', array(array(
'key' => '_stock_status',
'value' => 'outofstock',
'compare' => 'NOT IN'
)));
}
remove_action( 'pre_get_posts', 'custom_pre_get_posts_query' );
}
我想隐藏缺货的产品,但是没有任何效果。任何帮助表示赞赏。
答案 0 :(得分:0)
您正在使用旧的WooCommerce版本的代码。尝试这种方法。
add_action( 'pre_get_posts', 'custom_pre_get_posts_query' );
function custom_pre_get_posts_query( $q ) {
if ( ! $q->is_main_query() || is_admin() || ! $q->is_front_page() ) {
return;
}
if ( $outofstock_term = get_term_by( 'name', 'outofstock', 'product_visibility' ) ) {
$tax_query = (array) $q->get('tax_query');
$tax_query[] = array(
'taxonomy' => 'product_visibility',
'field' => 'term_taxonomy_id',
'terms' => array( $outofstock_term->term_taxonomy_id ),
'operator' => 'NOT IN'
);
$q->set( 'tax_query', $tax_query );
}
}
答案 1 :(得分:0)
要从首页中排除“缺货”产品,可以用不同的方法完成。
1)使用专用的woocommerce_product_query_meta_query
过滤器挂钩的元查询:
add_filter( 'woocommerce_product_query_meta_query', 'filter_product_query_meta_query', 10, 2 );
function filter_product_query_meta_query( $meta_query, $query ) {
// On woocommerce home page only
if( is_front_page() ){
// Exclude products "out of stock"
$meta_query[] = array(
'key' => '_stock_status',
'value' => 'outofstock',
'compare' => '!=',
);
}
return $meta_query;
}
2)使用专用的woocommerce_product_query_tax_query
过滤器挂钩进行税收查询:
add_filter( 'woocommerce_product_query_tax_query', 'filter_product_query_tax_query', 10, 2 );
function filter_product_query_tax_query( $tax_query, $query ) {
// On woocommerce home page only
if( is_front_page() ){
// Exclude products "out of stock"
$tax_query[] = array(
'taxonomy' => 'product_visibility',
'field' => 'name',
'terms' => array('outofstock'),
'operator' => 'NOT IN'
);
}
return $tax_query;
}
代码进入活动子主题(或活动主题)的functions.php文件中。两者都可以。
相关:Hide out of stock products only on shop archive pages in Woocommerce
答案 2 :(得分:0)
更新
检查当前主题文件夹中的font-page.php
文件,也许您的开发人员已将自定义代码添加到模板文件中,而没有调用任何挂接操作。
旧答案
为什么不使用WooCommerce设置?