在woocommerce中,我试图创建一个简码以放入我的function.php 文档中,该简码在页面上显示自定义数据库查询。虽然有 问题,但我不确定。
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表中的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文本编辑器中。
[sqlquery_shortcode]
Wordpress
或者,您也可以将以下内容粘贴到任何php模板或文件中:
echo do_shortcode( "[sqlquery_shortcode]" );
or in between html tags:
<?php echo do_shortcode( "[sqlquery_shortcode]" ); ?>