以不同于登录用户的身份发表评论

时间:2012-10-04 作者:user1706680

当我在WP后端的“评论”部分(edit Comments.php)回复评论时,我只能以登录用户的身份发布回复。有没有可能在“添加新帖子”部分(post new.php)中选择一个特定的用户,在这里我有一个下拉列表,列出了所有允许写帖子的用户?

2 个回复
最合适的回答,由SO网友:onetrickpony 整理而成

是,在注释表单中添加用户选择字段:

add_action(\'comment_form_after_fields\', function(){

  // allow only users who can moderate comments to do this
  if(!current_user_can(\'moderate_comments\'))
    return;

  $user = wp_get_current_user();

  wp_dropdown_users(array(
    \'name\'     => \'alt_comment_user\',
    \'selected\' => $user->ID,
  ));

});
处理表单时,请检查是否已选择用户,并在将其插入数据库之前更改注释数据:

add_filter(\'preprocess_comment\', function($input){

  if(current_user_can(\'moderate_comments\') && isset($_POST[\'alt_comment_user\'])){    

    $user = get_user_by(\'id\', (int)$_POST[\'alt_comment_user\']);

    $my_fields = array(
      \'comment_author\'       => empty($user->display_name) ? $user->user_login : $user->display_name,
      \'comment_author_email\' => $user->user_email,
      \'comment_author_url\'   => $user->user_url,
      \'user_ID\'              => $user->ID,
    );

    // escape for db input
    foreach($my_fields as &$field)
      $field = $GLOBALS[\'wpdb\']->escape($field);

    $input = $my_fields + $input;   
  }  

  return $input;
});
参考号:wp_dropdown_users

SO网友:rubynorails

我无法让@onetrickpony的方法在20分钟左右的时间内发挥作用,而且我承认他发帖已经有一段时间了,所以事情可能已经改变了。

我结束了免费的插件购物,找到了Switch Users插件,它可以直接运行。我在WordFence中禁用了我的主用户,并且只以我的MFA[重命名]管理员用户身份登录。任何试图以我的主要用户身份登录的人都会立即被阻止。

使用Switch Users插件,当我想作为我的主要用户发表评论时,我可以轻松地从WP管理控制台切换到该用户,回复评论,然后切换回我的管理用户。

结束

相关推荐

是什么原因导致wp-Comments-post.php重定向到浏览器的IP地址?

我有一个WordPress副本正在运行,它最近已经从共享主机转移到我控制的VPS上。虽然同一站点的测试副本在同一实例的另一个vhost上、在同一IP地址上正确运行,但在我将公共站点移到另一个vhost上之后,注释表单开始将访问者重定向回自己的IP地址,并显示302 Found 代替成功的302 Moved Temporarily.运行WP 3.4.1,我尝试了:从仪表板重新安装WP,并检查所有插件都是最新的,停用所有插件并将主题设置为211,与工作测试安装不同,以检查它们是否是来自多个IP、计算机和浏览器