php - $wpdb 不适用于自定义(woocommerce)表

标签 php mysql wordpress woocommerce

我正在尝试检索 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/

相关文章:

php - 以编程方式在 Joomla 中创建菜单项

java - 无法向 MySQL 插入记录,但没有显示错误

php - 即使 JSON 响应正常,仍然收到 JSONException : Value <! DOCTYPE 类型错误

php - 多号码电话簿 (PHP-PDO)

Wordpress:activate_plugin 函数找不到该文件

PhpStorm (Laravel 8) 所有标准 Eloquent 方法在一个模型上都找不到,但在另一个模型上可用(无代码提示)

mysql - Laravel 在第一次创建模型时跳过约束违规

mysql - 在一个 MySQL 表中查找一对集合

php - Wordpress 中的永久链接不适用于 Laravel + Nginx

php - WordPress - 尝试使用计数器将今天的帖子分为上午和下午