如何获取多个帖子类型的评论?

时间:2013-11-03 作者:Fede

如何从多个帖子类型中获取评论?我想显示来自不同帖子类型页面的5条评论。

<?php 

$defaults = array(
    \'number\' => 5,
    \'post_type\' => array(\'post\',\'authors\',\'movies\')
);
$comments = get_comments($defaults);
 ?>

2 个回复
最合适的回答,由SO网友:birgire 整理而成

看起来像是WP_Comment_Query() 仅支持单个立柱类型。

您可以使用comments_clauses 滤器

请尝试以下示例:

$defaults = array(
    \'number\'    => 5,
    \'post_type\' => array( \'post\',\'authors\',\'movies\' ),
);
add_filter( \'comments_clauses\', \'wpse_121051\', 10, 2 );     
$comments = get_comments($defaults)
在哪里

 /**
  * Support for multiple post types for comments
  *
  * @param array $clauses
  * @param object $wpqc WP_Comment_Query
  * @return array $clauses
  */   
 function wpse_121051( $clauses, $wpqc )
 {
    global $wpdb;

    // Remove the comments_clauses filter, we don\'t need it anymore. 
    remove_filter( current_filter(), __FUNCTION__ );

    // Add the multiple post type support.
    if( isset( $wpqc->query_vars[\'post_type\'][0] ) )
    {

        $join = join( "\', \'", array_map( \'esc_sql\', $wpqc->query_vars[\'post_type\'] ) );

        $from = "$wpdb->posts.post_type = \'" . $wpqc->query_vars[\'post_type\'][0] . "\'";                         
        $to   = sprintf( "$wpdb->posts.post_type IN ( \'%s\' ) ", $join );

        $clauses[\'where\'] = str_replace( $from, $to, $clauses[\'where\'] );
    }  

    return $clauses;
 }
插件:正如@kaiser善意的建议,我做了一个small plugin 将多个帖子类型支持添加到WP_Comment_Query()get_comments(). 希望WordPress核心在不久的将来能够支持这个缺失的功能;-)

SO网友:darrinb

为了防止任何人遇到这个问题,WordPress现在接受post_type的参数get_comments()

结束

相关推荐

在POST循环外部加载Comments.php模板

我正在通过ajax加载帖子,并使用$post = get_post( $post_ID );是否有方法加载注释。在我输出帖子后使用php模板?我尝试使用:global $withcomments; $withcomments = true; comments_template(); 但它不在循环中,因此它不加载模板。我正在尝试获取我的评论表单和任何当前的评论来显示,只是遇到了一些困难。任何帮助都将不胜感激!