我正在使用与以下类似的功能,以便在类别/搜索结果页面上隐藏属于特定类别的缺货产品。像这样:
function hide_out_of_stock_parts_from_cat( $q ) {
if ( ! $q->is_main_query() || is_admin() ) {
return;
}
if (is_product_category(1111) || is_search()){
if ( $outofstock_term = get_term_by( 'name', 'outofstock', 'product_visibility' ) ) {
$tax_query = (array) $q->get('tax_query');
$tax_query[] = array(
array(
'taxonomy' => 'product_visibility',
'field' => 'term_taxonomy_id',
'terms' => array( $outofstock_term->term_taxonomy_id ),
'operator' => 'NOT IN'
),
array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array( 'my-category-slug' ),
'operator' => 'NOT IN'
),
);
$q->set( 'tax_query', $tax_query );
}
remove_action( 'pre_get_posts', 'hide_out_of_stock_parts_from_cat' );
}
}
add_action( 'pre_get_posts', 'hide_out_of_stock_parts_from_cat' );
这成功地从类别页面和搜索结果中删除了属于“ my-category-slug”的缺货产品。但是,显示的产品数是错误的。
i.e)如果该类别有5种产品,但是有2种产品缺货,则只会显示3种产品。但是,找到的产品消息将显示“显示找到的所有5个产品”,而不是3。
我知道这与“ found_posts”有关,但是我不确定如何更改它。