我试图修改get_previous_post_sort/get_next_post_sort
订单的自定义帖子类型的帖子导航基于这些帖子存储在数据库中的一个字段的顺序(这是通过另一个自定义字段在另一个地方设置)。
默认情况下,get_previous_post_sort/get_next_post_sort
订单只是根据这些帖子输入的日期进行排序,但我需要他们根据数据库中的自定义字段进行排序。
数据库中的字段存储的帖子id的顺序,我需要他们在像这样:1746, 1741, 1751, 1755, 1758, 1761, 1749, 1764, 1776, 1767, 1781, 1770, 1773, 1784, 1787, 1790, 1793, 1798, 1801, 1804, 1807, 1810, 1813, 1816, 1819, 1822, 1825, 1828, 1831, 1834, 1837, 1840, 1843, 1846
我已经能够从自定义字段拉在这串数字,但我有麻烦,它实际上影响了我的上一个/下一个链接。调试输出中的查询看起来很可靠:
SELECT p.*
FROM wp_posts AS p
INNER JOIN wp_postmeta AS m ON p.ID = m.post_id
WHERE p.post_date < '2011-11-09 17:08:32'
AND p.post_type = 'story-images'
AND p.post_status = 'publish'
AND m.meta_key = 'editorial'
AND m.meta_value = 771
ORDER BY FIELD(p.ID,1627,1624,1630,1633,1636,1639,1642,1645,1648,1653,1656,1659,1662,1665,1668,1671,1694,1730,1697,1700,1703,1706,1709,1712,1715,1718,1721,1724,1727)
下面是我用来过滤所有内容的实际代码(生成这个查询):http://pastebin.com/ceiib5Hf
这样就更清楚了。感谢到目前为止的回复!
您可以使用FIELD(...)
:
ORDER BY FIELD(p.ID,1746,1741,...,1840,1843,1846)
将这些"神奇的"数字放到另一个表中,该表有两行:
- 神奇数字
- 排序顺序
现在将您的表与第二个表连接起来,并按排序顺序排序。这将允许更容易维护您的查询和数字。