我们有一个wordpress网站,我们希望在档案页面上为自定义帖子类型强制某个帖子始终排在最前面 .
我们在functions.php中使用'pre_get_posts'来编辑sql .
直接在MySQL中我们可以使用:...当ID = 7075然后0 ELSE 1 END时按顺序排序
但是我们不能从functions.php中调用'order by'子句(我们将sql语句转储到页面以查看它是如何处理的)
$ query-> set('orderby','CASE WHEN ID = 7075 THEN 0 ELSE 1 END'); (这会改为'... ORDER BY wp_posts.ID DESC')
$ query-> set('orderby','(ID = 7075)'); $ query-> set('order','DESC'); (这会被忽略,默认使用'... ORDER BY wp_posts.post_date DESC')
$ query-> set('orderby',array('CASE WHEN wp_posts.ID = 7075 THEN 1 ELSE 2 END'=>'ASC')); (根本没有订单条款)
有没有人设法做到这一点?我们不想为页面编写自定义sql . 任何帮助赞赏:)
V
1 回答
我只会做两个查询,一个只输出您想要的帖子在顶部,另一个输出除顶部之外的所有帖子 .