2017-05-17 10 views
0

特定のユーザーの役割によるすべてのコメントをフィルタリングしようとしています。この場合、ユーザーロールはgroup1と呼ばれます。これは、下のクエリからWHERE m.meta_key = 'wp_capabilities' AND m.meta_value = 'group1' を削除した場合にのみすべてのコメントを返します。ユーザーの役割によるWordPressのコメントのフィルタリング

$query = $wpdb->prepare(" 
SELECT * 
    FROM $wpdb->comments c 
    LEFT 
    JOIN $wpdb->commentmeta cm 
    ON c.comment_ID = cm.comment_id 
    LEFT 
    JOIN $wpdb->users u 
    ON c.user_id = u.ID 
    LEFT 
    JOIN $wpdb->usermeta m 
    ON m.user_id = u.ID 
WHERE c.comment_post_ID = %s 
    AND c.comment_approved = 1 
WHERE m.meta_key = 'wp_capabilities' 
    AND m.meta_value = 'group1' 
ORDER 
    BY c.comment_ID $comment_order 
        ", 
        $post->ID); 
+0

これは、構文エラーが返されます。 – Strawberry

答えて

0

は、次の2つのWHERE句を持っていますが、でも、構文エラーを修正の上、それは句は、外側を回すところで外側のテーブルのフィルタ条件としてinner joinとして働く内部結合に参加します。

LEFT JOINON句自体に、外側のテーブルのフィルタを追加します。

select * 
from $wpdb - > comments c 
left join $wpdb - > commentmeta cm on c.comment_ID = cm.comment_id 
left join $wpdb - > users u on c.user_id = u.ID 
left join $wpdb - > usermeta m on m.user_id = u.ID 
    and m.meta_key = 'wp_capabilities' 
    and m.meta_value = 'group1' 
where c.comment_post_ID = % s 
    and c.comment_approved = 1 
order by c.comment_ID $comment_order 
+0

ユーザーIDとumeta_idが更新され、クエリと一部の値が配列にありません。 – Society43

関連する問題