我正在尝试使用SQL检索Woocommerce订单项的元键和值,以便可以在自己的报告中汇总信息,但是我确实在努力将元键和值提取为列。谁能提供任何SQL示例?有可以用于元数据的Wordpress API吗?
我尝试创建以下SQL作为扩展查询产品信息的基础。它返回正确的数据类型,但仅返回一行:
SELECT O.order_item_id, O.order_item_name,
MAX(IF(OIM.meta_key = 'class', OIM.meta_value, NULL)) AS class
FROM wp_woocommerce_order_items AS O
LEFT JOIN wp_woocommerce_order_itemmeta AS OIM on O.order_item_id =
OIM.order_item_id
WHERE O.order_item_name='Smiths Night School';
谢谢
答案 0 :(得分:3)
我很高兴你明白了!这是学习事物的最好方法。为了帮助您,我将向您介绍在WordPress(PHP)中执行此操作的正确方法:
<?php
//DB
global $wpdb;
//Get results from the database
$results = $wpdb->get_results( "SELECT O.order_item_id, O.order_item_name, MAX(CASE WHEN OIM.meta_key = 'class' THEN OIM.meta_value END) AS 'class', MAX(CASE WHEN OIM.meta_key = 'fee-type' THEN OIM.meta_value END) AS 'fees' FROM wp_woocommerce_order_items O INNER JOIN wp_woocommerce_order_itemmeta OIM ON O.order_item_id = OIM.order_item_id WHERE O.order_item_name='Smiths Night School' GROUP BY O.order_item_id, O.order_item_name" );
foreach ( $results as $result ) {
echo $result->your_field_from_the_table;
}
WordPress定义了一个名为wpdb
的类,该类包含用于与数据库进行交互的一组函数。这是使用此类的好方法,因为它既简单又节省。
您也不需要在任何PHP文件中定义数据库的password
和user
(如果使用PHP数据库功能,则需要执行的操作)。如果您使用wpdb
,则此信息会直接从wp-config.php
文件中获取,这会更加安全。
答案 1 :(得分:1)
以下代码运行良好。该查询返回“史密斯夜校”的每个order_item_name的类别和费用类型信息。
SELECT
O.order_item_id, O.order_item_name,
MAX(CASE WHEN OIM.meta_key = 'class' THEN OIM.meta_value END) AS 'class',
MAX(CASE WHEN OIM.meta_key = 'fee-type' THEN OIM.meta_value END) AS 'fees'
FROM wp_woocommerce_order_items O
INNER JOIN wp_woocommerce_order_itemmeta OIM ON O.order_item_id = OIM.order_item_id
WHERE O.order_item_name='Smiths Night School'
GROUP BY O.order_item_id, O.order_item_name