Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.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 打印所有商业订单(针对管理员用户)_Php_Wordpress_Woocommerce - Fatal编程技术网

Php 打印所有商业订单(针对管理员用户)

Php 打印所有商业订单(针对管理员用户),php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我有点冒险进入这个未知的领域。有没有办法(从所有用户)查询所有WooCommerce订单?并将其显示在表格中,类似于管理“订单”页面中的显示方式?我试着研究管理员“订单”页面是如何工作的,但实际上没有成功。 任何帮助都将不胜感激 我认为一个好的开始应该是使用以下参数构建一个: $args = array( 'post_type' => 'shop_order', 'post_status' => 'publish',

我有点冒险进入这个未知的领域。有没有办法(从所有用户)查询所有WooCommerce订单?并将其显示在表格中,类似于管理“订单”页面中的显示方式?我试着研究管理员“订单”页面是如何工作的,但实际上没有成功。
任何帮助都将不胜感激

我认为一个好的开始应该是使用以下参数构建一个:

$args = array(              
    'post_type'      => 'shop_order',
    'post_status'    => 'publish',
    'posts_per_page' => -1,
    'tax_query'      => array(                          
        array(                              
            'taxonomy' => 'shop_order_status',                                          'field' => 'slug',                           
            'terms'    => array('processing')                           
        )                     
    )           
);

我认为一个好的开始应该是使用以下参数构建一个:

$args = array(              
    'post_type'      => 'shop_order',
    'post_status'    => 'publish',
    'posts_per_page' => -1,
    'tax_query'      => array(                          
        array(                              
            'taxonomy' => 'shop_order_status',                                          'field' => 'slug',                           
            'terms'    => array('processing')                           
        )                     
    )           
);

以下是我将如何开始。但是,我现在对WP\u List\u表的理解不够深入,无法填写

这需要在插件中:

function orders_redux_menu(){
    if ( current_user_can( 'manage_woocommerce' ) ) {
        add_submenu_page( 'woocommerce', __( 'Orders Part Deux', 'your-plugin-textdomain' ),  __( 'Orders Part Deux', 'your-plugin-textdomain' ) , 'manage_woocommerce', 'wc-orders-redux', 'orders_redux_page' );
    } 
}
add_action( 'admin_menu', 'orders_redux_menu', 15 );

function orders_redux_page() {

    if ( ! class_exists( 'WP_Posts_List_Table' ) ) {
        require_once( ABSPATH . 'wp-admin/includes/class-wp-posts-list-table.php' );
    }

    include_once('orders-table-redux.php');

    $new_table = new Orders_Redux_List();

    ?>
    <div class="wrap">
        <h2><?php _e( "Orders Redux", "your-plugin-textdomain" );?></h2>

        <div id="poststuff">
            <div id="post-body" class="metabox-holder columns-2">
                <div id="post-body-content">
                    <div class="meta-box-sortables ui-sortable">
                        <form method="post">
                            <?php
                            $new_table->prepare_items();
                            $new_table->display(); ?>
                        </form>
                    </div>
                </div>
            </div>
            <br class="clear">
        </div>
    </div>
<?php

}
WP\u List\u Table
有很多方法,您可以覆盖这些方法来自定义列、结果等


下面是一个自定义表实现的示例教程:

我将从这里开始。但是,我现在对WP\u List\u表的理解不够深入,无法填写

这需要在插件中:

function orders_redux_menu(){
    if ( current_user_can( 'manage_woocommerce' ) ) {
        add_submenu_page( 'woocommerce', __( 'Orders Part Deux', 'your-plugin-textdomain' ),  __( 'Orders Part Deux', 'your-plugin-textdomain' ) , 'manage_woocommerce', 'wc-orders-redux', 'orders_redux_page' );
    } 
}
add_action( 'admin_menu', 'orders_redux_menu', 15 );

function orders_redux_page() {

    if ( ! class_exists( 'WP_Posts_List_Table' ) ) {
        require_once( ABSPATH . 'wp-admin/includes/class-wp-posts-list-table.php' );
    }

    include_once('orders-table-redux.php');

    $new_table = new Orders_Redux_List();

    ?>
    <div class="wrap">
        <h2><?php _e( "Orders Redux", "your-plugin-textdomain" );?></h2>

        <div id="poststuff">
            <div id="post-body" class="metabox-holder columns-2">
                <div id="post-body-content">
                    <div class="meta-box-sortables ui-sortable">
                        <form method="post">
                            <?php
                            $new_table->prepare_items();
                            $new_table->display(); ?>
                        </form>
                    </div>
                </div>
            </div>
            <br class="clear">
        </div>
    </div>
<?php

}
WP\u List\u Table
有很多方法,您可以覆盖这些方法来自定义列、结果等


下面是一个自定义表实现的示例教程:

我认为,您需要所有订单列表,其中包含产品详细信息、客户详细信息等,因此您必须创建自己的自定义查询,以获得要在报告中显示的结果

如下查询我也用于我的项目

所以这对你有帮助

        SELECT
        p.ID as order_id,
        p.post_date,
        max( CASE WHEN pm.meta_key = '_billing_email' AND p.ID = pm.post_id THEN pm.meta_value END ) as billing_email,
        max( CASE WHEN pm.meta_key = '_billing_first_name' AND p.ID = pm.post_id THEN pm.meta_value END ) as _billing_first_name,
        max( CASE WHEN pm.meta_key = '_billing_last_name' AND p.ID = pm.post_id THEN pm.meta_value END ) as _billing_last_name,
        max( CASE WHEN pm.meta_key = '_billing_address_1' AND p.ID = pm.post_id THEN pm.meta_value END ) as _billing_address_1,
        max( CASE WHEN pm.meta_key = '_billing_address_2' AND p.ID = pm.post_id THEN pm.meta_value END ) as _billing_address_2,
        max( CASE WHEN pm.meta_key = '_billing_city' AND p.ID = pm.post_id THEN pm.meta_value END ) as _billing_city,
        max( CASE WHEN pm.meta_key = '_billing_state' AND p.ID = pm.post_id THEN pm.meta_value END ) as _billing_state,
        max( CASE WHEN pm.meta_key = '_billing_postcode' AND p.ID = pm.post_id THEN pm.meta_value END ) as _billing_postcode,
        max( CASE WHEN pm.meta_key = '_shipping_first_name' AND p.ID = pm.post_id THEN pm.meta_value END ) as _shipping_first_name,
        max( CASE WHEN pm.meta_key = '_shipping_last_name' AND p.ID = pm.post_id THEN pm.meta_value END ) as _shipping_last_name,
        max( CASE WHEN pm.meta_key = '_shipping_address_1' AND p.ID = pm.post_id THEN pm.meta_value END ) as _shipping_address_1,
        max( CASE WHEN pm.meta_key = '_shipping_address_2' AND p.ID = pm.post_id THEN pm.meta_value END ) as _shipping_address_2,
        max( CASE WHEN pm.meta_key = '_shipping_city' AND p.ID = pm.post_id THEN pm.meta_value END ) as _shipping_city,
        max( CASE WHEN pm.meta_key = '_shipping_state' AND p.ID = pm.post_id THEN pm.meta_value END ) as _shipping_state,
        max( CASE WHEN pm.meta_key = '_shipping_postcode' AND p.ID = pm.post_id THEN pm.meta_value END ) as _shipping_postcode,
        max( CASE WHEN pm.meta_key = '_order_total' AND p.ID = pm.post_id THEN pm.meta_value END ) as order_total,
        max( CASE WHEN pm.meta_key = '_order_tax' AND p.ID = pm.post_id THEN pm.meta_value END ) as order_tax,
        max( CASE WHEN pm.meta_key = '_paid_date' AND p.ID = pm.post_id THEN pm.meta_value END ) as paid_date,
        ( SELECT GROUP_CONCAT( order_item_name separator '|' ) FROM wp_woocommerce_order_items WHERE order_id = p.ID ) as order_items
    FROM
        wp_posts p 
        JOIN wp_postmeta pm on p.ID = pm.post_id
        JOIN wp_woocommerce_order_items oi on p.ID = oi.order_id
    WHERE
        post_type = 'shop_order' AND            
        post_status = 'wc-completed'
    GROUP BY
        p.ID

我认为,您需要所有带有产品详细信息、客户详细信息等的订单列表,因此您必须创建自己的自定义查询,以获得显示在报告中的结果

如下查询我也用于我的项目

所以这对你有帮助

        SELECT
        p.ID as order_id,
        p.post_date,
        max( CASE WHEN pm.meta_key = '_billing_email' AND p.ID = pm.post_id THEN pm.meta_value END ) as billing_email,
        max( CASE WHEN pm.meta_key = '_billing_first_name' AND p.ID = pm.post_id THEN pm.meta_value END ) as _billing_first_name,
        max( CASE WHEN pm.meta_key = '_billing_last_name' AND p.ID = pm.post_id THEN pm.meta_value END ) as _billing_last_name,
        max( CASE WHEN pm.meta_key = '_billing_address_1' AND p.ID = pm.post_id THEN pm.meta_value END ) as _billing_address_1,
        max( CASE WHEN pm.meta_key = '_billing_address_2' AND p.ID = pm.post_id THEN pm.meta_value END ) as _billing_address_2,
        max( CASE WHEN pm.meta_key = '_billing_city' AND p.ID = pm.post_id THEN pm.meta_value END ) as _billing_city,
        max( CASE WHEN pm.meta_key = '_billing_state' AND p.ID = pm.post_id THEN pm.meta_value END ) as _billing_state,
        max( CASE WHEN pm.meta_key = '_billing_postcode' AND p.ID = pm.post_id THEN pm.meta_value END ) as _billing_postcode,
        max( CASE WHEN pm.meta_key = '_shipping_first_name' AND p.ID = pm.post_id THEN pm.meta_value END ) as _shipping_first_name,
        max( CASE WHEN pm.meta_key = '_shipping_last_name' AND p.ID = pm.post_id THEN pm.meta_value END ) as _shipping_last_name,
        max( CASE WHEN pm.meta_key = '_shipping_address_1' AND p.ID = pm.post_id THEN pm.meta_value END ) as _shipping_address_1,
        max( CASE WHEN pm.meta_key = '_shipping_address_2' AND p.ID = pm.post_id THEN pm.meta_value END ) as _shipping_address_2,
        max( CASE WHEN pm.meta_key = '_shipping_city' AND p.ID = pm.post_id THEN pm.meta_value END ) as _shipping_city,
        max( CASE WHEN pm.meta_key = '_shipping_state' AND p.ID = pm.post_id THEN pm.meta_value END ) as _shipping_state,
        max( CASE WHEN pm.meta_key = '_shipping_postcode' AND p.ID = pm.post_id THEN pm.meta_value END ) as _shipping_postcode,
        max( CASE WHEN pm.meta_key = '_order_total' AND p.ID = pm.post_id THEN pm.meta_value END ) as order_total,
        max( CASE WHEN pm.meta_key = '_order_tax' AND p.ID = pm.post_id THEN pm.meta_value END ) as order_tax,
        max( CASE WHEN pm.meta_key = '_paid_date' AND p.ID = pm.post_id THEN pm.meta_value END ) as paid_date,
        ( SELECT GROUP_CONCAT( order_item_name separator '|' ) FROM wp_woocommerce_order_items WHERE order_id = p.ID ) as order_items
    FROM
        wp_posts p 
        JOIN wp_postmeta pm on p.ID = pm.post_id
        JOIN wp_woocommerce_order_items oi on p.ID = oi.order_id
    WHERE
        post_type = 'shop_order' AND            
        post_status = 'wc-completed'
    GROUP BY
        p.ID

为什么?看来你只是在复制现有的页面?@helgatheviking我不会用同样的方式使用它。我正在处理的商店功能非常复杂,不同的用户有不同的产品库存。所以我至少需要查询所有订单,以便为管理员创建另一个完整的定制库存报告。为什么?看来你只是在复制现有的页面?@helgatheviking我不会用同样的方式使用它。我正在处理的商店功能非常复杂,不同的用户有不同的产品库存。所以我至少需要查询所有订单,为管理员创建另一个完整的定制库存报告。这肯定很有趣。谢谢你的回答。现在跟我说说,这到底用在哪里?我的意思是我理解所有的事情,但我不确定我将如何实现这一点…创建您自己的插件来显示订单报告,并使用WP_List_Table类来显示您需要的报告数据。这确实很有趣。谢谢你的回答。现在跟我说说,这到底用在哪里?我的意思是,我知道所有的事情都在做什么,但我不确定我将如何实现这一点…创建您自己的用于显示订单报告的插件,并使用WP_List_Table类根据需要显示报告数据。谢谢您的回答。我已经尝试使用这个代码大约一个小时了。虽然我还没有取得任何成功,但我会继续研究这个问题。这绝对是一个很好的出发点!我知道,这是一个模糊的起点。对此我很抱歉。休息一下,带着新鲜的眼光回来。谢谢你的回答。我已经尝试使用这个代码大约一个小时了。虽然我还没有取得任何成功,但我会继续研究这个问题。这绝对是一个很好的出发点!我知道,这是一个模糊的起点。对此我很抱歉。让自己休息一下,然后带着新鲜的眼睛回来。