【发布时间】:2020-12-18 03:36:43
【问题描述】:
我正在使用 wordpress 5.5 和 php 7.4 和 mysql 5.7.30 我正在为我的电子商务系统使用 woocomerce 订阅插件。 我想要的是能够在管理面板中显示 paginatd 订阅列表 和(重要部分)根据管理面板中的“next_payment_schedule”、“first_payment_schedule”日期对它们进行排序。 woocommerce 订阅插件将所有订阅保留为自定义帖子类型,其类型为:“shop_subscription”,并且还将其所有特定字段保留在 postmeta 表中。
问题正如我所说,这个插件将这些日期保存在 postmeta 表中。 如何同时支持分页和排序?
这是我当前的查询:
SELECT p.id AS post_id, p.post_status, u.id AS user_id , u.user_login, u.user_email, GROUP_CONCAT(pm.meta_value)
FROM posts AS p
INNER JOIN users AS u ON p.post_author = u.id
INNER JOIN postmeta AS pm ON pm.post_id = p.id
WHERE post_type = 'shop_subscription'
AND pm.meta_key in ('_schedule_start', '_schedule_next_payment')
GROUP BY p.id
ORDER BY user_login ASC
当我想处理分页时,这个查询很好。
当我想处理排序时,以下查询很好,
SELECT p.id AS post_id, p.post_title, p.post_status, p.post_name, u.id AS user_id , u.user_login, u.user_email, pm.meta_key, pm.meta_value from posts AS p
INNER JOIN postmeta AS pm ON pm.post_id = p.id
INNER JOIN users AS u ON p.post_author = u.id
WHERE post_type = 'shop_subscription'
AND pm.meta_key in ('_schedule_start', '_schedule_next_payment')
ORDER BY CASE WHEN pm.meta_key IN('_schedule_next_payment') THEN pm.meta_value END desc
我应该如何处理这种情况?
【问题讨论】:
标签: mysql sql wordpress woocommerce woocommerce-subscriptions