小编典典

从Woocommerce中显示为列表的SQL查询获取订单

sql

在woocommerce中,我试图创建一个简码以放入我的function.php
文档中,该简码在页面上显示自定义数据库查询。虽然有
问题,但我不确定。

function sqlquery_shortcode($atts) {
    global $wpdb;
    $results = $wpdb->get_results("
        SELECT a.order_id, a.order_item_id, a.order_item_name, b.meta_key, b.meta_value
        FROM 7pW9iX3L_woocommerce_order_items a
        JOIN 7pW9iX3L_woocommerce_order_itemmeta  b 
            ON a.order_item_id = b.order_item_id
        JOIN 7pW9iX3L_posts c               
            ON a.order_id = c.ID
        JOIN 7pW9iX3L_postmeta d
            ON c.ID = d.post_id
        WHERE order_item_type = 'line_item'
    ");

    // Loop through each order post object
    foreach($results as $result) {
        $order_id = $result->ID; // The Order ID

        // Get an instance of the WC_Order Object
        $order = wc_get_order( $result->ID );
    }
}
add_shortcode("sqlquery_shortcode");

阅读 179

收藏
2021-04-07

共1个答案

小编典典

有很多小错误和错误。您的SQL查询不正确,因此我进行了
一些更改,以使其首先工作。

这是您重新访问的代码,可从
html表中的SQL查询中获取订单行项目。这只是一个功能齐全且经过测试的示例代码,您
需要根据需要进行更改:

add_shortcode('sqlquery_shortcode', 'sqlquery_shortcode');
function sqlquery_shortcode( $atts ) {
    global $wpdb;

    $results = $wpdb->get_results("
        SELECT a.order_id, a.order_item_id AS item_id, a.order_item_name AS item_name,
        b.meta_value AS product_id, c.meta_value AS quantity, d.meta_value AS subtotal
        FROM {$wpdb->prefix}woocommerce_order_items a
        JOIN {$wpdb->prefix}woocommerce_order_itemmeta  b ON a.order_item_id = b.order_item_id
        JOIN {$wpdb->prefix}woocommerce_order_itemmeta  c ON a.order_item_id = c.order_item_id
        JOIN {$wpdb->prefix}woocommerce_order_itemmeta  d ON a.order_item_id = d.order_item_id
        WHERE a.order_item_type = 'line_item'
        AND b.meta_key = '_product_id'
        AND c.meta_key = '_qty'
        AND d.meta_key = '_line_subtotal'
        ORDER BY a.order_id DESC
    ");

    // Start buffering
    ob_start();

    echo '<table><tr>';
    echo '<th>Order ID</th>';
    echo '<th>Item ID</th>';
    echo '<th>Product ID</th>';
    echo '<th>Item Name</th>';
    echo '<th>Quantity</th>';
    echo '<th>Subtotal</th>';
    echo '</tr>';
    // Loop through each order post object
    foreach( $results as $result ){

        // Html display
        echo '<tr>';
        echo '<td>' . $result->order_id . '</td>';
        echo '<td>' . $result->item_id . '</td>';
        echo '<td>' . $result->product_id . '</td>';
        echo '<td>' . $result->item_name . '</td>';
        echo '<td>' . $result->quantity . '</td>';
        echo '<td>' . $result->subtotal . '</td>';
        echo '</tr>';
    }

    echo '</table>';

    // Return output (render the buffered data)
    return ob_get_clean();
}

代码进入您的活动子主题(或活动主题)的function.php文件中。
经过测试和工作。


USAGE:

您将把该短代码粘贴到 页面或帖子[sqlquery_shortcode]Wordpress文本编辑器中。

或者,您也可以将以下内容粘贴到任何php模板或文件中:

echo do_shortcode( "[sqlquery_shortcode]" );

or in between html tags:

<?php echo do_shortcode( "[sqlquery_shortcode]" ); ?>
2021-04-07