通过执行一个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>';
答案 0 :(得分:0)
库存状态与“正在销售”的产品无关,并且_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文件中。经过测试,可以正常工作。