【问题标题】:Wordpress Walker Class - Hierarchical Threaded Custom Post TypeWordpress Walker 类 - 分层线程自定义帖子类型
【发布时间】: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 的人可以提供一些意见。如果我在发布答案之前弄清楚了,我会发布我的解决方案。
  • 对此我还是一头雾水,但递归函数也可能是一种选择。我正在努力,但递归还没有发生。

标签: php wordpress


【解决方案1】:

我找到了一个很好的解决方案。我最终复制了 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,                          
                )

【讨论】:

    猜你喜欢
    • 2013-06-22
    • 2013-08-03
    • 1970-01-01
    • 2014-05-15
    • 2011-03-20
    • 2014-05-21
    • 2017-08-23
    • 2020-11-17
    • 1970-01-01
    相关资源
    最近更新 更多