使用wp_Delete_User()从前端删除用户

时间:2012-03-11 作者:jetlej

我希望管理员能够删除用户从前端点击一个按钮。如果提供了用户ID,如何使用wp\\u delete\\u users()函数在前端创建这样的按钮?

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

您可以使用AJAX请求自定义“操作”并发送用户ID。或者将操作和用户ID“发布”到同一页面。它们本质上是相同的,但前者不需要重新加载页面。

这个网站上有很多关于AJAX的主题,所以我将省略细节(查看ajax 标记以获取更多信息)。

无论哪种方式,都要将操作设置为“myprefix\\u delete\\u user”,并将“user\\u id”设置为相应用户的id。

Ajax方法发送带有“myprefix\\u delete\\u user”操作的Ajax请求将触发挂钩:

  • wp_ajax_myprefix_delete_user - 如果您已登录wp_ajax_nopriv_myprefix_delete_user - 如果您已注销,我们只想在您登录时执行某些操作,因此我们只会将回调附加到第一个挂钩:

    add_action(\'wp_ajax_myprefix_delete_user\',\'myprefix_delete_user_cb\');
    function myprefix_delete_user_cb(){
        //You should check nonces and user permissions at this point.
        $user_id = int_val($_REQUEST[\'user_id\']);
        wp_delete_user($user_id);
        exit();
    }
    
    \'POST/GET\'方法(不确定该方法调用什么…)。工作原理大致相同。再次“发布”操作和user\\u id变量。您可以通过构建链接来实现这一点:

    $user_id=9 //ID of the user to be deleted.
    $url = add_query_arg(array(\'action\'=>\'myprefix_delete_user\', \'user_id\'=>$user_id));
    echo  "<a href=\'".$url. "\'>Delete User</a>"; 
    
    这会将数据“发布”(不太)到当前页面。然后你勾上\'init\' 如果设置了操作:

    if(isset($_REQUEST[\'action\']) && $_REQUEST[\'action\']==\'myprefix_delete_user\')
        add_action(\'init\',\'myprefix_delete_user_cb\');
    
    可以使用相同的回调函数,但有以下更改:

    移除exit();wp_redirect 重定向回同一页。通过重定向,如果用户单击“刷新”,则不会尝试重新执行删除I have not performed any nonce or permission checks. 你真的应该这样做。后者是一个简单的current_user_can 检查你如何做前者将取决于使用哪种方法,但我鼓励你read this.

    这个问题大致相似,可能有助于:

SO网友:Katie Serano

上述答案有一个错误和一个遗漏(不确定为什么有4个检查)

(1)int_val 不是WP功能intval 是WP功能

2) 你需要include("./wp-admin/includes/user.php" ) 调用wp_delete_user

我想删除用户而不必访问管理仪表板-以下是有效的代码解决方案:

add_action(\'init\',\'prefix_delete_user\');
function prefix_delete_user() {
if(isset($_REQUEST[\'action\']) && $_REQUEST[\'action\']==\'prefix_delete_user\') {
   include("./wp-admin/includes/user.php" );
   //check admin permissions.
   if (current_user_can(\'edit_users\')) {
       $user_id = intval($_REQUEST[\'user_id\']);
       wp_delete_user($user_id);
       exit();
   }
}
}
发布此内容时会发生操作

http://website.com/?action=prefix_delete_user&user_id=<ID>
添加到您的函数中。php

结束

相关推荐

Front-End Post Submission

我正在尝试添加一个表单,用户可以从前端提交帖子。我正在学习本教程:http://wpshout。com/wordpress从前端提交帖子/我正在做的是添加this code 到我的一个页面模板。表单显示正常,但当我单击“提交”按钮时,它会显示“Page not found error“”许多评论者说这不起作用。谁能给我指出正确的方向吗?代码是否不完整?有缺陷吗?我做错什么了吗?谢谢Towfiq I。