1

一連のユーザーによる投稿からすべてのコメントを取得しようとしています。

これは私ができるようにしたいことです:

$user_ids = array(10, 22, 41, 80);
$post_id = 57;

$args = array (
    'number'   => -1,
    'user_id'  => $user_ids,
    'post_id'  => $post_id,
    'status'   => 'approve',
    'order'    => 'DESC'
);
$comments = get_comments( $args );

明らかにこれは機能しませんが、それが私がやりたいことです。これを達成する他の方法はありますか?多分カスタム選択を使用していますか?

4

6 に答える 6

3

クラスのqueryメソッドに基づいて WPDB クエリを作成しましたWP_Comment_Queryそして、このフォーラムの投稿に基づいてサニタイズを行います。

global $wpdb;

// Sanitize
$post = '1148';
$post = absint($post);

// Sanitize
$a = '2'; // User One
$b = '3'; // User Two
$user_ids = array_map( 'absint', array( $a, $b ) );
$user_ids = implode( ', ', $user_ids );

$query = "SELECT * FROM $wpdb->comments 
        WHERE comment_post_ID = $post 
        AND user_id IN ($user_ids) 
        AND comment_approved = 1
        ORDER BY comment_date DESC";
$comments = $wpdb->get_results( $query );
于 2013-07-16T19:38:34.170 に答える
1

簡単なSELECTクエリは次のようになります。

$query = "SELECT * FROM $wpdb->comments 
          WHERE comment_post_ID = %d 
             AND comment_approved = 1
             AND user_id IN %s
          ORDER BY comment_date DESC"; // get only approved comment and sort by date

$comments = $wpdb->get_results($wpdb->prepare(
    $query, 
    intval($post_id), 
    '('.implode(',', array_map('intval', $user_ids)).')'
)); // use prepare to prevent SQL injection

お役に立てれば。

于 2013-07-19T00:26:33.013 に答える
0
only single user to get post:
$args = array(
    'status' => 'approve',
    'number' => '-1',
    'post_id' => 57,
        'user_id'  => 1,
        'order'    => 'DESC'
);
$comments = get_comments($args);
foreach($comments as $comment) :
    echo($comment->comment_author . '<br />' . $comment->comment_content);
endforeach;
?>

複数のユーザーが投稿 ID を使用してコメントを取得する場合:

$args = array( 'user_id' => 0 );
add_filter( 'comments_clauses', 'custom_comments_clauses');
$comments = get_comments( $args );
remove_filter( 'comments_clauses', 'custom_comments_clauses');

function custom_comments_clauses( $clauses ){
    $clauses['where'] = str_replace( 'user_id = 0',
                       'user_id IN (1, 2, 3)',
                       $clauses['where'] );
    return $clauses;
}

https://wordpress.stackexchange.com/questions/105010/get-comments-only-for-certain-specific-users-in-template-file

于 2013-07-18T08:06:24.500 に答える