複数のカスタム投稿タイプのコメントをまとめて取得したい での回答した内容の備忘録(と、若干のコードリファクタリング)
get_comments で指定できるパラメーターは、文字列形式のみで、配列やカンマ区切りによる複数指定はできません。
これは、内部でSQL文を構成する際に、prepare メソッドを用いて文字列や数字にはめ込んでいるためです。
ただし、comments_clauses というフィルターフックが用意されていて、SQL文のほぼ全ての句を変更することができるようになっています。
function multi_post_type_comments_where( $clauses, $comment_query ) { global $wpdb; if ( is_array( $comment_query->query_vars['post_type'] ) ) { $post_types = $wpdb->_escape( $comment_query->query_vars['post_type'] ); $search = $wpdb->prepare( " AND {$wpdb->posts}.post_type = %s", $comment_query->query_vars['post_type'] ); $replace = " AND {$wpdb->posts}.post_type IN ( '" . implode( "','", $post_types ) . "' )"; $clauses['where'] = str_replace( $search, $replace, $clauses['where'] ); } return $clauses; } add_filter( 'comments_clauses', 'multi_post_type_comments_where', 10, 2 );
回答は、投稿タイプのパラメーター固定ですが、パラメーターを foreach などでループ処理させることで、他のパラメーターについても、配列での複数指定に対応させることは可能なはずです。