评论提要和自定义帖子状态

时间:2016-06-08 作者:Alex Ciarlillo

我在常规帖子中添加了2个帖子状态。它们是“已解决”和“未解决”的,本质上是对问题的基本跟踪。两者都注册为“公共”。来自这些状态的帖子将显示在帖子RSS提要中。但是,添加到具有这些状态的帖子的评论不会显示在评论提要中。添加到常规“已发布”帖子的评论看起来不错。我已经检查过了,当一条新评论添加到已解决/未解决的帖子中,并进行了双重检查,所有评论都列为“已批准”,但仍不显示时,提要缓存正在更新。

我已经对WP源做了很多探索,试图确定为什么会这样,但我做不到。在获取帖子之前,我甚至尝试将我的帖子状态手动添加到WP\\u查询对象,但没有结果。feed本身使用WP\\u Query对象,但我无法确定是否也有对WP\\u Comment\\u Query的调用。WP\\u查询对象设置了“with\\u comments”标志。

那么,有人知道为什么会发生这种情况吗?我的假设是,在查询链的某个地方,他们专门针对“已发布”的帖子,但必须弄清楚我可能会使用什么钩子来更改它。

以下是注册我的状态的代码:

function resolved_unresolved_status() {
  register_post_status(\'resolved\',
    array(
      \'label\' => _x(\'Resolved\', \'post\'),
      \'public\' => true,
      \'exclude_from_search\' => false,
      \'show_in_admin_all_list\' => true,
      \'show_in_admin_status_list\' => true,
      \'label_count\' => _n_noop(\'Resolved <span class="count">(%s)</span>\', \'Resolved <span class="count">(%s)</span>\')
    )
  );

  register_post_status(\'unresolved\',
    array(
      \'label\' => _x(\'Unresolved\', \'post\'),
      \'public\' => true,
      \'exclude_from_search\' => false,
      \'show_in_admin_all_list\' => true,
      \'show_in_admin_status_list\' => true,
      \'label_count\' => _n_noop(\'Unresolved <span class="count">(%s)</span>\', \'Unresolved <span class="count">(%s)</span>\')
    )
  );
}

add_action(\'init\', __NAMESPACE__ . \'\\\\resolved_unresolved_status\');
在这里我试着使用pre_get_posts 筛选以强制我的状态为“无运气”:

function alter_feed_query($query) {
        if($query->is_comment_feed) {
                $query->set(\'post_status\', array(\'publish\', \'resolved\', \'unresolved\'));
        }
        return $query;
}
add_filter(\'pre_get_posts\', __NAMESPACE__ . \'\\\\alter_feed_query\');

1 个回复
SO网友:Alex Ciarlillo

找到筛选器:comment_feed_where 筛选WHERE子句,默认情况下,WHERE子句只查找状态为publish的帖子。

function comment_feed_where_status($where) {
        return str_replace(
                "post_status = \'publish\'",
                "post_status = \'publish\' OR post_status = \'resolved\' OR post_status = \'unresolved\'",
                $one);
}
add_filter(\'comment_feed_where\', __NAMESPACE__ . \'\\\\comment_feed_where_status\');
我通过启用“SAVEQUERIES”进行调试并在提要页面上转储查询数组找到了这一点。