【问题标题】:Get the count of all customers with a "billing company" in Woocommerce在 Woocommerce 中使用“计费公司”获取所有客户的数量
【发布时间】:2018-04-24 21:04:31
【问题描述】:

我在 Wordpress 中有一个带有 Woocommerce 的网站,对于我的报告,我需要知道我有多少专业知识。

由于 Woocommerce 不提供此信息,我需要自己获取,但无法手动计算。

所以我决定使用 Woocommerce Rest Api 来获取信息。

我试图让所有填写“计费公司”字段的客户。

我用 php curl 提出我的请求并开始我的代码:

//URL
$url = '<...>/wp-json/wc/v2/customers';

//REQUEST
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$login:$password");
$result = curl_exec($ch);
curl_close($ch);  

$json = json_decode($result, true);
print_r($json);

我有两个问题:

  • 无法获得所有客户
  • 无法获取“计费公司”变量

有什么办法吗?

谢谢

【问题讨论】:

    标签: php wordpress curl woocommerce woocommerce-rest-api


    【解决方案1】:

    为什么您不在 WooCommerce > 报告 > 客户中添加自定义子选项卡,名称将是“专业人士”。在此自定义选项卡中,您可以轻松获取拥有结算公司的客户数量。

    代码是:

    // Add a custom sub-tab to customer tab WooCommerce reports
    add_filter( 'woocommerce_admin_reports', 'admin_report_customer_pro_section', 10, 1 );
    function admin_report_customer_pro_section( $reports ){
        $reports['customers']['reports']['customer_pro'] = array(
            'title'       => __( 'Professionals', 'woocommerce' ),
            'description' => '',
            'hide_title'  => true,
            'callback'    => 'content_admin_report_customer_pro',
        );
        return $reports;
    }
    
    // The content of the customer custom sub-tab
    function content_admin_report_customer_pro(){
        // Get all Customers
        $customers = get_users( array( 'role' => 'customer'));
        $count = 0;
    
        // Iterating through each customer in the array
        foreach ($customers as $customer) {
            // Count professional customers that have a billing company
            if( ! empty( $customer->billing_company ) ) $count++;
        }
    
        // Output the count
        echo '<div style="background-color:white; padding:8px 20px;"><p>'.__( 'Number of Professionals (with a company): ', 'woocommerce' ) . '<strong style="display:inline-block;background-color:#9c5d90; padding:0 10px; color:white;">' . $count . '</strong></p></div>';
    }
    

    代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件中。

    经过测试并且可以工作……你会得到这个:

    【讨论】:

    • 嗨,我没想到会这样,这样更好,非常感谢您的提示!无论如何,我尝试并且它有效,但我对这个数字有疑问。我有 1084 个客户,当我输入你的代码时,我看到了 314,我使用你的代码进行逆运算(我将“!=”更改为“=”),我得到 379。总数不是 1084 O_O跨度>
    • @ LoicTheAztec 我尝试了 sql 请求,是的,它也是 314。我还尝试SELECT * FROM wp_usermeta WHERE meta_key LIKE 'billing_company 列出所有具有此元数据的客户,但我只有 693 个,所以它是计数 (379+314)。自那以后,Woocommerce 是否更改了他的数据库?似乎此 SQL 请求仅适用于新的 woocommerce 数据库。我有 391 个不知道状态的客户:/
    • @Efbi 我已经用一些新代码(不是 SQL 查询)更新了我的答案……这次它应该可以按预期工作……试试看,让我知道。谢谢......我也尝试过没有成功的 WP_query 或过滤 get_users() 查询。它所做的事情与之前的 SQL 查询完全相同……
    • 不错,谢谢!我认为它有效,我有 313 名专业人士和 772 名其他人,所以总数是好的?仅供参考,get_users() 查询仅限于 Wordpress 元或还包括 woocommerce 客户属性元?比如“is_paying_customer”?
    • @Efbi 我认为get_users() 元查询仅限于 wp_usermeta 表...
    猜你喜欢
    • 2021-05-07
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    • 2022-01-11
    • 2021-05-22
    • 2019-06-26
    • 1970-01-01
    相关资源
    最近更新 更多