从 SQL 查询中获取订单,该查询显示为 Woocommerce 中的列表
Get orders from a SQL query displayed on as a list in Woocommerce
在 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");
有很多小错误和错误。您的 SQL 查询不正确,因此我进行了更改以使其首先起作用。
这是您重新访问的代码,用于从 html table 中的 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 文件。已测试并有效。
用法:
您可以将该短代码 [sqlquery_shortcode]
粘贴到页面或 post 的 Wordpress 文本编辑器中。
或者您也可以将以下内容粘贴到任何 php 模板或文件中:
echo do_shortcode( "[sqlquery_shortcode]" );
或介于 html 个标签之间:
<?php echo do_shortcode( "[sqlquery_shortcode]" ); ?>
你会得到类似的东西:
在 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");
有很多小错误和错误。您的 SQL 查询不正确,因此我进行了更改以使其首先起作用。
这是您重新访问的代码,用于从 html table 中的 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 文件。已测试并有效。
用法:
您可以将该短代码 [sqlquery_shortcode]
粘贴到页面或 post 的 Wordpress 文本编辑器中。
或者您也可以将以下内容粘贴到任何 php 模板或文件中:
echo do_shortcode( "[sqlquery_shortcode]" );
或介于 html 个标签之间:
<?php echo do_shortcode( "[sqlquery_shortcode]" ); ?>
你会得到类似的东西: