我正在尝试检索 woocommerce 在此插件创建的自定义表中保存的一些订单详细信息,但遇到两个问题。
使用以下代码,即使我在页面上启用错误报告,页面也会中断且没有可见错误
global $wpdb;
$wpdb->woocommerce_order_items = $wpdb->prefix . 'woocommerce_order_items';
$wpdb->woocommerce_order_itemmeta = $wpdb->prefix . 'woocommerce_order_itemmeta';
$therapists = $wpdb->get_results("SELECT
u.ID,
m1.meta_value as first_name,
m2.meta_value as last_name,
m3.meta_value as pma_skills,
m4.meta_value as pma_photo,
m5.meta_value as pma_job_titles,
m6.post_id as order_id,
m7.order_item_id as order_item_id,
m8.meta_value as status,
m9.meta_value as expiry_date,
m10.meta_value as product_id
FROM $wpdb->users AS u
LEFT JOIN $wpdb->usermeta AS m1
ON u.ID = m1.user_id AND m1.meta_key = 'first_name'
LEFT JOIN $wpdb->usermeta AS m2
ON u.ID = m2.user_id AND m2.meta_key = 'last_name'
LEFT JOIN $wpdb->usermeta AS m3
ON u.ID = m3.user_id AND m3.meta_key = 'pma_skills'
LEFT JOIN $wpdb->usermeta AS m4
ON u.ID = m4.user_id AND m4.meta_key = 'pma_photo'
LEFT JOIN $wpdb->usermeta AS m5
ON u.ID = m5.user_id AND m5.meta_key = 'pma_job_titles'
LEFT JOIN $wpdb->postmeta AS m6
ON u.ID = m6.meta_value
LEFT JOIN $wpdb->woocommerce_order_items AS m7
ON order_id = m7.order_id AND m7.order_item_type = 'line_item'
LEFT JOIN $wpdb->woocommerce_order_itemmeta AS m8
ON m7.order_item_id = m8.order_item_id AND m8.meta_key = '_subscription_status'
LEFT JOIN $wpdb->woocommerce_order_itemmeta AS m9
ON m7.order_item_id = m9.order_item_id AND m9.meta_key = '_subscription_expiry_date'
LEFT JOIN $wpdb->woocommerce_order_itemmeta AS m10
ON m7.order_item_id = m10.order_item_id AND m10.meta_key = '_product_id'
WHERE m1.meta_value IS NOT NULL");
使用以下代码,自定义表将从查询中删除,如下所示
左加入 m7 ON order_id = m7.order_id AND m7.order_item_type = 'line_item'
而不是
左加入 wp_woocommerce_order_items AS m7 ON order_id = m7.order_id AND m7.order_item_type = 'line_item'
global $wpdb;
$therapists = $wpdb->get_results("SELECT
u.ID,
m1.meta_value as first_name,
m2.meta_value as last_name,
m3.meta_value as pma_skills,
m4.meta_value as pma_photo,
m5.meta_value as pma_job_titles,
m6.post_id as order_id,
m7.order_item_id as order_item_id,
m8.meta_value as status,
m9.meta_value as expiry_date,
m10.meta_value as product_id
FROM $wpdb->users AS u
LEFT JOIN $wpdb->usermeta AS m1
ON u.ID = m1.user_id AND m1.meta_key = 'first_name'
LEFT JOIN $wpdb->usermeta AS m2
ON u.ID = m2.user_id AND m2.meta_key = 'last_name'
LEFT JOIN $wpdb->usermeta AS m3
ON u.ID = m3.user_id AND m3.meta_key = 'pma_skills'
LEFT JOIN $wpdb->usermeta AS m4
ON u.ID = m4.user_id AND m4.meta_key = 'pma_photo'
LEFT JOIN $wpdb->usermeta AS m5
ON u.ID = m5.user_id AND m5.meta_key = 'pma_job_titles'
LEFT JOIN $wpdb->postmeta AS m6
ON u.ID = m6.meta_value
LEFT JOIN $wpdb->prefixwoocommerce_order_items AS m7
ON order_id = m7.order_id AND m7.order_item_type = 'line_item'
LEFT JOIN $wpdb->prefixwoocommerce_order_itemmeta AS m8
ON m7.order_item_id = m8.order_item_id AND m8.meta_key = '_subscription_status'
LEFT JOIN $wpdb->prefixwoocommerce_order_itemmeta AS m9
ON m7.order_item_id = m9.order_item_id AND m9.meta_key = '_subscription_expiry_date'
LEFT JOIN $wpdb->prefixwoocommerce_order_itemmeta AS m10
ON m7.order_item_id = m10.order_item_id AND m10.meta_key = '_product_id'
WHERE m1.meta_value IS NOT NULL");
如果我只使用完整的表名称而不是变量,我也会得到一个没有错误的损坏页面。
您可以在本页 http://psicologialondra.com/testpage/ 上看到结果
我做错了什么?我正在尝试使用推荐的代码,但它似乎不起作用:(
最佳答案
第二个代码无法工作,你肯定需要第一个。如果您使用该查询,查询会打印出来吗?我还会使用 var_dump 检查 get_results 方法是否返回任何错误。
关于php - $wpdb 不适用于自定义(woocommerce)表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23431440/