我想要实现的是:
主题(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只有在回复回复时才会出现。如果它是对一个主题的回复,就不会发生这种情况。这就是为什么我“认为”我需要数组参数的key exists部分。
总之
需要一组$args,如果可能的话,做嵌套回复。或者我必须自己手动执行sql才能做到这一点?
编辑:查看我的评论。我稍微更改了标题,因为我相信为了实现这一点,一个自定义的Wordpress Walker类实现可能是解决方案。
发布于 2017-01-24 09:35:49
我找到了一个非常有效的解决方案。我最终复制了bbPress Reply Walker类,它是WordPress walker类的扩展,并修改了一些参数以满足我的需要。我还必须创建自己的列出回复的函数,类似于bbPress的列表回复函数。列表回复函数具有自定义参数,如下所示:
$args = array(
'post_type' => 'reply',
'post_parent' => $postID,
'posts_per_page' => 50,
'orderby' => 'date',
'order' => 'ASC',
'hierarchical' => true,
'ignore_sticky_posts' => true,
)https://stackoverflow.com/questions/41452673
复制相似问题