【问题标题】:Get and display products On Sale count in WooCommerce [closed]在 WooCommerce 中获取和显示产品销售计数 [关闭]
【发布时间】:2018-12-24 20:34:55
【问题描述】:

通过执行 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>';

【问题讨论】:

  • “似乎无法正常工作”“这不起作用” 不是明确的问题描述。请提供示例数据、预期输出以及您得到的结果。
  • 这个线程应该重新打开:这个问题对于习惯于 woocommerce 的人来说很清楚,并且 OP 的代码包含获取问题证据所需的任何内容。

标签: php wordpress woocommerce product discount


【解决方案1】:

库存状态与“特价”产品无关,_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 文件中。经过测试并且可以工作。

【讨论】:

  • 嗨 LoicTheAztec,抱歉 - 但我认为我必须以这种方式计算产品,我正试图找到获得折扣的正确方法。谢谢你的回答,它有效。
猜你喜欢
  • 1970-01-01
  • 2018-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-20
  • 2021-05-18
  • 2019-09-16
相关资源
最近更新 更多