在Woocommerce中,我想在单个产品页面中显示当前用户的总购买产品数量.例如,如果约翰买了2次Pen,那么它会在John产品页面中为John用户显示计数(“2”),如果Jack买了5次,那么它将在Jack产品页面中为Jack用户显示5.
add_action( 'woocommerce_single_product_summary', 'wc_product_sold_count', 11 );
function wc_product_sold_count() {
$get_current_pro_id = $_SESSION["iddd"];
global $product;
$current_user = wp_get_current_user();
if ( wc_customer_bought_product( $current_user->user_email, $current_user->ID, $product->get_id() ) )
{
$units_sold = get_post_meta( $product->id, 'total_sales', true );
//echo '<p>' . sprintf( __( 'Units Sold: %s', 'woocommerce' ), $units_sold ) . '</p>';
return $units_sold;
}
}
解决方法:
add_action( 'woocommerce_single_product_summary', 'wc_product_sold_count', 11 );
function wc_product_sold_count() {
// Only for logged in users
if ( ! is_user_logged_in() ) return; // Exit for non logged users
global $wpdb, $product;
$user_id = get_current_user_id(); // Current User ID
$product_id = $product->get_id(); // Current Product ID
// The sql request
$units_bought = $wpdb->get_var( "
SELECT SUM(woim2.Meta_value)
FROM {$wpdb->prefix}woocommerce_order_items AS woi
INNER JOIN {$wpdb->prefix}woocommerce_order_itemMeta woim ON woi.order_item_id = woim.order_item_id
INNER JOIN {$wpdb->prefix}woocommerce_order_itemMeta woim2 ON woi.order_item_id = woim2.order_item_id
INNER JOIN {$wpdb->prefix}postMeta pm ON woi.order_id = pm.post_id
INNER JOIN {$wpdb->prefix}posts AS p ON woi.order_id = p.ID
WHERE woi.order_item_type LIKE 'line_item'
AND p.post_type LIKE 'shop_order'
AND p.post_status IN ('wc-completed','wc-processing')
AND pm.Meta_key = '_customer_user'
AND pm.Meta_value = '$user_id'
AND woim.Meta_key = '_product_id'
AND woim.Meta_value = '$product_id'
AND woim2.Meta_key = '_qty'
");
// display count if is greater than zero
if( $units_bought > 0 ){
$label = __( 'Units bought' , 'woocommerce' ); // Label
// Output
echo '<p class="units-bought"><strong>' . $label . ': </strong>' . $units_bought . '</p>';
}
}
代码位于活动子主题(或活动主题)的function.PHP文件中.经过测试和工作.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。