Я использую 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
Как мне поступить в этой ситуации?