Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php WooCommerce:在SQL查询中获取产品变体的总销售额_Php_Sql_Wordpress_Woocommerce_Variations - Fatal编程技术网

Php WooCommerce:在SQL查询中获取产品变体的总销售额

Php WooCommerce:在SQL查询中获取产品变体的总销售额,php,sql,wordpress,woocommerce,variations,Php,Sql,Wordpress,Woocommerce,Variations,我正在为一个插件创建插件扩展。当前插件创建各种报告,包括每个产品最畅销产品的报告 我需要重新创建此设置以显示基于变化的顶级产品。所需字段为产品名称、SKU、销售数量、销售总额 如何获取产品变化的数据 我已经在下面输入了我当前的代码 SQL查询和数据处理: $phoen_product_query = " SELECT posts.post_title AS product_name, meta.meta_key as mkey,

我正在为一个插件创建插件扩展。当前插件创建各种报告,包括每个产品最畅销产品的报告

我需要重新创建此设置以显示基于变化的顶级产品。所需字段为产品名称、SKU、销售数量、销售总额

如何获取产品变化的数据

我已经在下面输入了我当前的代码

SQL查询和数据处理:

$phoen_product_query = "
        SELECT  
            posts.post_title AS product_name,
            meta.meta_key as mkey, 
            meta.meta_value as product_value, 
            posts.ID AS ID
            FROM  {$wpdb->posts} AS posts
            LEFT JOIN {$wpdb->postmeta} AS meta 
                ON posts.ID = meta.post_id 
        WHERE 
            posts.post_status IN ( 'publish','private' ) 
            AND posts.post_type IN ( 'product' ) 
            AND meta.meta_key IN ( 'total_sales' ,'_price' ,'post_views_count', '_sku') 
        ORDER BY
            posts.ID ASC, 
            meta.meta_key ASC
    ";
    $phoen_product_data = $wpdb->get_results(  $phoen_product_query,ARRAY_A);

    foreach($phoen_product_data as $key1 => $valuee){

        if(!isset( $phoen_top_products[$valuee['ID']])){

            $phoen_top_products[$valuee['ID']] = Array();

            $phoen_top_products[$valuee['ID']] = Array(

                "produc_total" => 0,

                "product_price" => 0,

                "product_count" => 0,

                "product_views" => 0

            );

        }

        switch ($valuee['mkey']) {

            case "_sku":

                $phoen_top_products[$valuee['ID']]["product_sku"] = $valuee['product_value'];

                break;

            case "_price":

                $phoen_top_products[$valuee['ID']]["product_price"] = $valuee['product_value'];

                break;

            case "post_views_count":

                $phoen_top_products[$valuee['ID']]["product_views"] = $valuee['product_value'];

                break;

            case "total_sales":

                $phoen_top_products[$valuee['ID']]["product_count"] = $valuee['product_value'];

                $phoen_top_products[$valuee['ID']]["produc_total"] = $valuee['product_value'] * $phoen_top_products[$valuee['ID']]["product_price"];

                $phoen_top_products[$valuee['ID']]["product_name"] = $valuee['product_name'];

                $phoen_top_products[$valuee['ID']]["ID"] = $valuee['ID'];

                break;

            default:

                break;

        }

    }
管理模块:

<table class="table table-striped table-bordered" id="phoen_top_product_table">
<thead>
  <tr>
    <th><?php _e( 'Product Name', 'advanced-reporting-for-woocommerce' ); ?></th>
    <th><?php _e( 'SKU', 'advanced-reporting-for-woocommerce' ); ?></th>
    <th><?php _e( 'Qty', 'advanced-reporting-for-woocommerce' ); ?></th>
    <th><?php _e( 'Amount', 'advanced-reporting-for-woocommerce' ); ?></th>
  </tr>
</thead>
<tbody>
<?php
$phoen_repot_product=array();
$phoen_product_count=0;

for($i=0; $i<count($phoen_top_products); $i++)
{
    if($phoen_get_product_val!='View All')
    {
        if($phoen_product_count<$phoen_get_product_val)
        {

            ?>
            <tr class="phoen_top_product_tr">
                <td>

                    <?php $phoen_product_title=isset($phoen_top_products[$i]['product_name'])?$phoen_top_products[$i]['product_name']:'';

                    echo $phoen_product_title; ?> 

                </td>

                <td>

                    <?php $phoen_product_sku=isset($phoen_top_products[$i]['product_sku'])?$phoen_top_products[$i]['product_sku']:'';     

                        echo $phoen_product_sku; ?> 

                </td>

                <td>

                    <?php 

                        $phoen_product_quentity=isset($phoen_top_products[$i]['product_count'])?$phoen_top_products[$i]['product_count']:'';     

                        echo $phoen_product_quentity; 

                    ?>

                </td>

                <td>
                    <?php 

                    $phoen_total_product_price=isset($phoen_top_products[$i]['produc_total'])?$phoen_top_products[$i]['produc_total']:'';

                        echo get_woocommerce_currency_symbol().($phoen_total_product_price);

                    ?>
                </td>


            </tr>   

            <?php

            $phoen_repot_product[$i]= array(

                'name'=>$phoen_product_title,
                'sku'=>$phoen_product_sku,
                'product_count'=>$phoen_product_quentity,
                'amount'=>$phoen_total_product_price

            );
        }
            $phoen_product_count++;
    }else{
        ?>
            <tr class="phoen_top_product_tr">
                <td>

                    <?php $phoen_product_title=isset($phoen_top_products[$i]['product_name'])?$phoen_top_products[$i]['product_name']:'';

                    echo $phoen_product_title; ?> 

                </td>

                <td>

                    <?php $phoen_product_sku=isset($phoen_top_products[$i]['product_sku'])?$phoen_top_products[$i]['product_sku']:'';

                    echo $phoen_product_sku; ?> 

                </td>

                <td>

                    <?php 

                        $phoen_product_quentity=isset($phoen_top_products[$i]['product_count'])?$phoen_top_products[$i]['product_count']:'';     

                        echo $phoen_product_quentity; 

                    ?>

                </td>

                <td>
                    <?php 

                    $phoen_total_product_price=isset($phoen_top_products[$i]['produc_total'])?$phoen_top_products[$i]['produc_total']:'';

                        echo get_woocommerce_currency_symbol().($phoen_total_product_price);

                    ?>
                </td>


            </tr>   

            <?php

            $phoen_repot_product[$i]= array(

                'name'=>$phoen_product_title,
                'sku'=>$phoen_product_sku,
                'product_count'=>$phoen_product_quentity,
                'amount'=>$phoen_total_product_price

            );
    }


}

$phoen_product_file = fopen('phoen-repot-product.csv', 'w');

fputcsv($phoen_product_file, array('Product Name', 'SKU', 'Qty', 'Amount'));

foreach ($phoen_repot_product as $phoen_product_row)
{
    fputcsv($phoen_product_file, $phoen_product_row);
}

fclose($phoen_product_file);    

 ?>

</tbody>


在数据库查询中,您忘了调用
post\u类型
,比如
'product\u variation'

您可以替换该行:

AND posts.post_type IN ( 'product' )
据此:

AND posts.post_type IN ( 'product','product_variation' ) 
或这个(较短):

您还将获得所有产品变化数据我已经测试了您的代码,它可以正常工作

(我只得到“post\u views\u count”为空,因为我认为这是一个自定义字段)。

谢谢您的回答!添加“产品变化”有助于我达到目标。非常感谢!抱歉耽搁了!我以为我已经选择了你的答案。
AND posts.post_type LIKE 'product%'