php - 在 pre_get_posts 中更改查询后修复 found_posts - WordPress
问题描述
我正在使用与以下类似的功能,以便在类别/搜索结果页面上隐藏属于特定类别的缺货产品。像这样:
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”的缺货产品。但是,显示的产品数量是错误的。
ie) 如果该类别有 5 个产品,但有两个缺货,则只会显示三个产品。但是,找到的产品消息会显示“显示所有 5 个找到的产品”而不是 3 个。
我知道这与“found_posts”有关,但我不确定如何更改它。
解决方案
推荐阅读
- wordpress - Wordpress 自定义帖子类型前端时间戳
- api - 是否可以将 GitHub 个人访问令牌限制为特定存储库?
- c# - 为什么不执行索引较低的迭代?
- indexing - 有没有办法将 Couchbase 索引添加到版本控制中?
- r - R中的异常处理-下载正确的数据时返回
- php - 我无法将 data_type 从 TINYTEXT 更改为 DATE&/DATETIME
- reactjs - 如何使用钩子将对象数组推入状态
- react-native - 在 Parent 中传递两个函数
- mysql - MySQL - 选择具有字段值 > 10 且不按此字段排序的第一行的查询
- python - 如何使用蓝牙将数据从 Android/iOS 应用程序发送到在树莓派上运行的 python 脚本?