【问题标题】:Allow users to manage only comments on their own posts允许用户仅管理对自己帖子的评论
【发布时间】:2011-12-04 07:52:47
【问题描述】:

我想限制贡献者和作者用户只能在他们自己的帖子上查看和管理 cmets。

我尝试了以下过滤器,但没有成功。

//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_cmets_thisuseronly');

我也试过了

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

【问题讨论】:

  • 您在前端、后端还是两者都需要这个?
  • 后端。我将拥有大量用户。他们真的不应该能够管理甚至在仪表板中其他任何人的帖子上看到 cmets。它基本上是破解或禁用 cmets :)
  • 该死。前端会比较简单,后端很难。我假设您找到了一些代码来仅显示作者自己的帖子并为 cmets 修改它?很抱歉,但这 - 即使有更多修改 - 也不起作用。仅列出一个用户制作的 cmets 也相对简单。但是在一个作者的所有帖子上而不是在其他人的帖子上列出 cmets 是一个难以破解的难题。问题在于 wp_cmets 表确实包含评论帖子的帖子 ID,但不包含其作者。
  • 因此我看到的唯一解决方案是从 wp-admin 中为作者和贡献者删除常规评论部分,并通过插件实现自己的评论部分,该插件不使用 wordpress 钩子,而是直接从wp_cmets 表。它必须从 wp_posts 表中获取特定作者帖子的所有帖子 ID,然后从 wp_cmets 中获取与这些 ID 相关的所有 cmets,然后显示它们在 wp-admin 中。这可以做到,但不幸的是超出了问答的范围和合同工作的范围。
  • 希望,看在你的份上,我错了(我对此非常怀疑):我会在wordpress.stackexchange.com问同样的问题

标签: php wordpress filter comments admin


【解决方案1】:

好的,我想通了。

首先,用户需要拥有有权编辑已发布帖子和管理 cmets 的角色。后者不是作者/贡献者的标准。

然后,通过过滤获取 cmets 的查询(使用 cmets_clauses)并添加连接,您可以仅显示当前登录用户的帖子的 cmets。

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');
}

完美运行。对角色的更改可能并不适合所有设置,但碰巧它在这个网站上对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-15
    • 2011-01-19
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    相关资源
    最近更新 更多