首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wordpress Walker类-分层线程化自定义帖子类型

Wordpress Walker类-分层线程化自定义帖子类型
EN

Stack Overflow用户
提问于 2017-01-04 05:29:51
回答 1查看 188关注 0票数 0

我想要实现的是:

主题(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循环中。

代码语言:javascript
复制
            $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类实现可能是解决方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-24 09:35:49

我找到了一个非常有效的解决方案。我最终复制了bbPress Reply Walker类,它是WordPress walker类的扩展,并修改了一些参数以满足我的需要。我还必须创建自己的列出回复的函数,类似于bbPress的列表回复函数。列表回复函数具有自定义参数,如下所示:

代码语言:javascript
复制
                $args = array(
                    'post_type'           => 'reply',                   
                    'post_parent'         => $postID,                   
                    'posts_per_page'      => 50,                        
                    'orderby'             => 'date',                        
                    'order'               => 'ASC',                         
                    'hierarchical'        => true,
                    'ignore_sticky_posts' => true,                          
                )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41452673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档