サポート » 使い方全般 » 複数のカスタム投稿タイプのコメントをまとめて取得したい

  • 解決済 xxxpudding

    (@xxxpudding)


    いつもお世話になっております。

    現在「food」「drink」「fruit」「sidedish」という4つのカスタム投稿ポストがあり、そのうち「food」「drink」についたコメントを新しい順に表示させたいと思っております。

    そこで、get_commentsのpost_typeプロパティに配列で「food」「drink」を指定したのですが、foodのコメントデータしか取得出来ていませんでした。
    (foodとdrinkを入れ替えてもdrinkのデータのみ取得)

    $comments = get_comments(array(‘status’ => ‘approve’ ,’number’ => 5,’post_type’ => array(‘food’,’drink’)));

    もし複数のカスタムタイプのコメントを取得する方法がございましたらご教授願います。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター jim912

    (@jim912)

    get_comments のパラメーターは、残念ながら配列では指定できず、指定しても最初に指定したものに限定されてしまうようです。

    ただし、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'] );
    		$regex = "/ AND {$wpdb->posts}.post_type = '[^']+'/";
    		$replace_where = " AND {$wpdb->posts}.post_type IN ( '" . implode( "','", $post_types ) . "' )";
    		$clauses['where'] = preg_replace( $regex, $replace_where, $clauses['where'] );
    	}
    	return $clauses;
    }
    add_filter( 'comments_clauses', 'multi_post_type_comments_where', 10, 2 );

    jim912様

    ご回答頂きまして有難う御座います。
    ご呈示頂いたソースをfunctions.phpに追記した所、希望通りの動作になりました!
    本当に有難う御座いました!

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「複数のカスタム投稿タイプのコメントをまとめて取得したい」には新たに返信することはできません。