WP_Delete_user link creation

时间:2014-07-31 作者:JPL

我正在尝试通过前端创建用户管理,但我不确定如何实现wp\\u delete\\u user delete链接

add_action( \'wp_head\', \'my_action_javascript\' );

function my_action_javascript() {
?>
<script type="text/javascript" >
jQuery(document).ready(function () {

    jQuery(".delete_user").click(function () {

        var data = {
            \'action\': \'delete_user_action\',
                \'user_id\': jQuery(this).attr(\'delete-user-id\'),

                \'security\': ajax_object.ajax_nonce
        };
        jQuery.post(ajax_object.ajax_url, data, function (response) {

        });

    });

});
</script>
<?php
}

add_action( \'wp_ajax_delete_user_action\', \'delete_user_action_callback\' );
add_action( \'wp_ajax_nopriv_delete_user_action\', \'delete_user_action_callback\' );

function delete_user_action_callback(){
  check_ajax_referer( \'security-special-string\', \'security\' );
  wp_delete_user( $_POST[\'user_id\'] );
  die();
}


add_shortcode(\'listuser\', \'listsubscriber\');
function listsubscriber() {
$blogusers = get_users( array(  \'fields\' => array(\'display_name\',\'ID\' )) );

echo \'<ul>\';
foreach ( $blogusers as $user ) {

    echo \'<li>\' . esc_html( $user->display_name )  . \'|\' . esc_html( $user->ID )  . \'<a class="delete_user" delete-user-id="\' . $user->ID . \'" href="#">Delete User</a></li>\';

}
echo \'</ul>\';

}

    }

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

WordPress不提供删除用户链接,因为它提供了删除帖子的功能。因此,我们应该使用Ajax来实现这一点。解决这一问题的方法如下:

将用户id作为属性添加到标记中单击锚定时,获取用户id并发出ajax请求,该请求将删除用户请删除$deleteurl = wp_delete_user ( $user->ID); 来自代码。因为它将在列出之前删除用户,因此将引发错误。我们将在ajax调用中添加它。

让我们从向锚定标记添加属性开始。我们将向锚定标记添加用户id属性和类。因此,您的链接如下所示:

echo \'<li>\' . esc_html( $user->display_name )  . \'|\' . esc_html( $user->ID )  . \'<a class="delete_user" delete-user-id="\' . $user->ID . \'" href="#">Delete User</a></li>\';
在js文件中添加以下jQuery代码。你需要通过admin_url( \'admin-ajax.php\' ) 作为js文件的ajax url。wp_localize_script 可用于将php值传递给javascript。您可以阅读更多关于Ajax in WordPress here.

我假设js文件中的Ajax url可以使用ajax_object.ajax_url. 请使用自己的参数更改此参数。还可以使用wp\\u localize\\u脚本传递nonce字段。因此,在将使用wp\\u localize\\u脚本传递的数组中,还有一个键,如下所示:\'ajax_nonce\' => wp_create_nonce( "security-special-string" ). 出于安全目的,这是必需的

您不需要文档。ready语句,如果您已经调用了它,并且在这种情况下开始使用jQuery(".delete_user").click(function(){ 线

jQuery(document).ready(function(){

  jQuery(".delete_user").click(function(){

        var data = {
        \'action\': \'delete_user_action\',
        \'user_id\': jQuery(this).attr(\'delete-user-id\'), //Pass User id
        \'security\': ajax_object.ajax_nonce
      };

      //lets fire ajax request
      jQuery.post(ajax_object.ajax_url, data, function(response) { 
        //Add your code here to show message after deleting the user.
      }
  });

});
现在让我们编写一段代码来处理ajax请求。您可以在插件的php文件或函数中编写此代码。主题的php。

add_action( \'wp_ajax_delete_user_action\', \'delete_user_action_callback\' );
add_action( \'wp_ajax_nopriv_delete_user_action\', \'delete_user_action_callback\' );

function delete_user_action_callback(){
  check_ajax_referer( \'security-special-string\', \'security\' );
  wp_delete_user( $_POST[\'user_id\'] );
  die();
}
出于安全目的,您应该检查用户是否有权使用删除用户if( current_user_can( \'delete_users\' ) ) 条件

Update

感谢您发布代码。我们需要对代码进行修改。

请尝试此代码:

add_action( \'wp_head\', \'my_action_javascript\' );

function my_action_javascript() {

        ?>
        <script type="text/javascript" >
                jQuery(document).ready(function() {

                        jQuery(".delete_user").click(function() {

                                var current_element_var = jQuery(this);

                                var data = {
                                        \'action\': \'delete_user_action\',
                                        \'user_id\': current_element_var.attr(\'delete-user-id\'),
                                        \'security\': \'<?php echo wp_create_nonce( "security-special-string" ) ?>\'
                                };
                                jQuery.post(\'<?php echo admin_url( \'admin-ajax.php\' ) ?>\', data, function(response) {
                                        if (response == \'deleted_successfully\') {
                                                current_element_var.hide();
                                                current_element_var.after(\'<span> User Deleted Successfully </span>\');
                                                current_element_var.remove();
                                        }
                                });

                                return false;

                        });

                });
        </script>
        <?php

}

add_action( \'wp_ajax_delete_user_action\', \'delete_user_action_callback\' );
add_action( \'wp_ajax_nopriv_delete_user_action\', \'delete_user_action_callback\' );

function delete_user_action_callback() {
        check_ajax_referer( \'security-special-string\', \'security\' );
        wp_delete_user( $_POST[\'user_id\'] );
        echo \'deleted_successfully\';
        die();

}
如果上述代码对您有效,请告诉我。:)

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post