【发布时间】:2017-01-03 21:29:51
【问题描述】:
我想要达到的目标:
主题(一)
回复 1 (2)
--回复2(3)
--回复2(4)
----回复4(5)
----回复4(6)
回复主题 1 (7)
----回复6(7)
-----回复7(8)
---回复8(9)
--------回复8(10)
我现在拥有的更像
主题(一)
回复 1 (2)
回复 2 (3)
回复 4 (5)
回复 7 (6)
回复 6 (7)
回复 4 (8)
回复 8 (9)
回复主题 1 (10)
回复 8 (11)
回复 2 (12)
以上是我使用 Wordpress 和 bbPress 构建的论坛的示例结构。有主题和回复,它们都是自定义帖子类型。我能够很好地显示带有回复的主题,但我希望在嵌套/线程视图中对它们进行排序。我希望它们嵌套在作为父级的回复下方,而不是简单地让所有回复都按日期或 ID 的顺序显示。
我希望这是有道理的。基本上它是线程主题和回复,就像 facebook 一样。
以下是我的参数和回复查询,位于主题 WP_Query 循环内。
$args = array(
'post_type' => 'reply', // custom post type
'posts_per_page' => '50',
'orderby' => 'post_parent',
'post_parent' => $topic_id,
'meta_query' => array(
'relation' => 'OR',
array(
'key'=> $topic_id,
),
array(
'key'=>'_bbp_reply_to',
'compare' => 'NOT EXISTS'
),
array(
'key'=>'_bbp_reply_to',
'compare' => 'EXISTS',
),
),
'orderby' => 'meta_value_num',
'order' => 'ASC',
);
//global $wpdb;
$loopReply = new WP_Query($args);
我希望这不是太不清楚。我发现了其他关于 wordpress postmeta 排序的问题,但这是一个奇怪的问题。您会看到元键 _bbp_reply_to 只有在它是对回复的回复时才会显示。如果它是对主题的回复,则不会发生。这就是为什么我“认为”我需要将 args 的 key 存在部分排列起来。
简短
如果可能的话,需要一组 $args 来做嵌套回复。还是我必须自己手动执行 sql 才能实现?
编辑:见我的评论。我稍微更改了标题,因为我相信自定义 Wordpress Walker 类实现可能是解决方案。
【问题讨论】:
-
我还没有解决这个问题,但经过大量阅读后,我确定实现这一目标的最佳方法是使用 Wordpress Walker 类。希望知道 WP Walkers 的人可以提供一些意见。如果我在发布答案之前弄清楚了,我会发布我的解决方案。
-
对此我还是一头雾水,但递归函数也可能是一种选择。我正在努力,但递归还没有发生。