2011-10-21 8 views
0

投稿者と投稿者のユーザーに自分の投稿のコメントのみを表示し管理するように制限したい。ユーザーが自分の投稿のコメントのみを管理できるようにする

私は以下のフィルターをうまく試してみました。

//Manage Your Own Comments Only 
    function myplugin_comments_thisuseronly($wp_query) { 
if (strpos($_SERVER[ 'REQUEST_URI' ], '/wp-admin/edit-comments.php') !== false) { 
    if (!current_user_can('edit_others_posts')) { 
     global $current_user;global $wpdb; 
     $usersposts = $wpdb->get_results($wpdb->prepare("SELECT ID FROM wp_posts WHERE post_author = %s", $current_user->id)); 
     $wp_query->set('comment_post_ID', array($usersposts)); 
    } 
} 
} 

ADD_FILTER( 'parse_query'、 'myplugin_comments_thisuseronly')。

私もOK

$wp_query->set('comment_post_ID__in', array($usersposts)); 
+0

フロントエンド、バックエンド、またはその両方でこれが必要ですか? –

+0

バックエンド。私は多数のユーザーを抱えています。ダッシュボード内の他のユーザーの投稿を管理したり、コメントを表示することはできません。それはひどくこれをクラックさせるかコメントを基本的に無効にしています:) – Katherine

+0

ダーン。フロントエンドは比較的シンプルで、バックエンドは難しいでしょう。 著者の投稿のみを表示してコメント用に変更するコードがあるとしますか?申し訳ありませんが、これは変更を加えても機能しません。 1人のユーザーが行ったコメントのみを一覧表示するのも比較的簡単です。しかし、著者の投稿のすべてにコメントを記載するのではなく、他人のコメントにコメントを付けるのは難しいです。 問題は、_wp_comments_テーブルにコメント投稿の投稿IDは含まれていますが、投稿者の投稿IDは含まれていないという点にあります。 –

答えて

3

を試みたが、私はこれを考え出しました。

まず、投稿された投稿を編集してコメントを管理する権限を持つユーザーが必要です。後者は著者/投稿者のためのではなく、標準です。

次に、コメントを取得するクエリ(comments_clausesを使用)をフィルタリングし、結合を追加すると、現在ログインしているユーザーによる投稿のコメントのみを表示できます。

function my_plugin_get_comment_list_by_user($clauses) { 
if (is_admin()) { 
    global $user_ID, $wpdb; 
    $clauses['join'] = ", wp_posts"; 
    $clauses['where'] .= " AND wp_posts.post_author = ".$user_ID." AND wp_comments.comment_post_ID = wp_posts.ID"; 
}; 
return $clauses; 
}; 
// Ensure that editors and admins can moderate all comments 
if(!current_user_can('edit_others_posts')) { 
add_filter('comments_clauses', 'my_plugin_get_comment_list_by_user'); 
} 

完全に動作します。役割の変更はすべての設定に適合しないかもしれませんが、それが起こると、このサイトで私のために働きます。

関連する問題