【发布时间】: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