我想要实现的目标:
主题(1)
回复1(2)
- 回复2(3)
- 回复2(4)
----回复4(5)
----回复4(6)
回复主题1(7)
----回复6(7)
------回复7(8)
---回复8(9)
------回复8(10)
我现在拥有的更像是
主题(1)
回复1(2)
回复2(3)
回复4(5)
回复7(6)
回复6(7)
回复4(8)
回复8(9)
回复主题1(10)
回复8(11)
回复2(12)
以上是我使用Wordpress和bbPress构建的论坛的示例结构。主题和回复都是自定义帖子类型。我能够显示回复正确的主题,但我希望在嵌套/线程视图中对它们进行排序。我希望它们显示为嵌套在作为父级的回复之下,而不是简单地使回复全部按日期或ID的顺序显示。
我希望这是有道理的。基本上它就像facebook那样是主题和回复。
下面是我的args和查询回复,它位于主题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部分。
简短
需要一组$ args,如果可能的话做嵌套回复。或者我是否必须使用自己的手动sql来实现此目的?
编辑:看我的评论。我改变了标题,因为我相信实现这一点,自定义Wordpress Walker类实现可能就是解决方案。
答案 0 :(得分:0)
我找到了一个效果很好的解决方案。我最终复制了bbPress Reply Walker类,它是WordPress walker类的扩展,并修改了一些参数以满足我的需求。我还必须自己创建列出回复的功能,类似于bbPress的列表回复功能。列表回复函数有自定义args如下:
$args = array(
'post_type' => 'reply',
'post_parent' => $postID,
'posts_per_page' => 50,
'orderby' => 'date',
'order' => 'ASC',
'hierarchical' => true,
'ignore_sticky_posts' => true,
)