php - 在 WooCommerce 中获取和显示产品 On Sale 计数
问题描述
通过执行 SQL 查询(似乎无法正常工作)计算有多少产品在售(它计算有多少产品有折扣价),我的目标是使用钩。该消息应包含计数(有多少产品在售)。
期望的示例输出:“正在寻找优惠?我们目前有 XX 产品在售!”
关于为什么这不起作用的任何想法或见解?这是我的代码:
function get_onsale_products_count() {
global $wpdb;
// SQL query for counting products that are on sale
$result = $wpdb->get_col( "
SELECT COUNT(p.ID)
FROM {$wpdb->prefix}posts as p
INNER JOIN {$wpdb->prefix}postmeta as pm ON p.ID = pm.post_id
WHERE p.post_type LIKE '%product%'
AND p.post_status LIKE 'publish'
AND pm.meta_key LIKE '_stock_status'
AND pm.meta_value LIKE '_on_sale'
" );
return reset($result);
}
add_action('woocommerce_before_single_product_summary', 'get_onsale_products_count');
$count = get_onsale_products_count();
$great_deal = sprintf( __( 'Want to make a good deal? We\'ve got %s products on sale!' ), $count );
echo '<span class="great-deal">'.$great_deal.'</span>';
解决方案
库存状态与“特价”产品无关,_on_sale
元值不存在,这就是您的 SQL 查询不起作用的原因。
特价产品有一个明确的“销售价格”,所以请尝试:
function get_onsale_products_count() {
global $wpdb;
// SQL query for counting products that are on sale
return $wpdb->get_var( "
SELECT COUNT(p.ID)
FROM {$wpdb->prefix}posts as p
INNER JOIN {$wpdb->prefix}postmeta as pm ON p.ID = pm.post_id
WHERE p.post_type LIKE '%product%'
AND p.post_status = 'publish'
AND pm.meta_key = '_sale_price'
AND pm.meta_value != ''
" );
}
add_action( 'woocommerce_before_single_product_summary', 'display_onsale_products_count_message', 3 );
function display_onsale_products_count_message(){
echo '<span class="great-deal">' . sprintf( __( "Want to make a good deal? We've got %s products on sale!" ),
get_onsale_products_count() ) . '</span>';
}
代码位于您的活动子主题(或活动主题)的 function.php 文件中。测试和工作。
推荐阅读
- java - 使用 MPXJ 在 Python 中将 MPP 文件转换为 MS XML 格式
- javascript - Playwright.js 元素未找到错误处理
- javascript - 为什么我不能为反应钩子分配输入值?
- java - Eclipse IDE Java 编译问题
- azure - 将 Azure 中的应用程序与不同租户中的 Azure AD 连接
- python - 在实时 tkinter 中更新 matplotlib 的问题
- postgresql - 移除外键关联防止级联删除sequelize
- minecraft - 完全更改玩家姓名的具体功能是什么?
- r - which() 用于多个值
- android - 如何在真正的 android 设备上运行 React 本机应用程序