子比主题自助注销功能部署

子比主题自助注销功能是针对WordPress子比主题开发的一款插件,旨在为用户提供一种便捷的方式来自行注销其账户。

一、功能概述

子比主题自助注销功能允许网站上的普通用户通过简单的操作自助注销其账户,同时删除与该账户相关的所有信息,如个人资料、私信、评论、文章和订单等。这一功能在保护用户隐私、遵守数据保护法规(如GDPR)以及减少僵尸账户残留方面具有重要意义。

二、使用场景

  • 用户希望退出网站并删除自己的所有信息时。
  • 网站管理员为满足数据保护法规要求,为用户提供自助注销渠道。

三、操作流程

  1. 下载并启用插件:首先,用户需要从可靠的插件源下载子比主题自助注销插件,并在WordPress后台中启用该插件。
  2. 创建注销页面:启用插件后,用户需要在WordPress后台中创建一个新的页面,作为自助注销的入口。在创建页面时,可以选择使用插件提供的自助注销页面模板。
  3. 配置注销页面:在注销页面中,用户需要配置相关设置,如注销按钮的显示样式、注销后信息的处理方式等。确保注销按钮对不同的用户角色(如管理员、普通用户、未登录用户)显示不同的内容或行为。
  4. 发布注销页面:配置完成后,用户将注销页面发布到网站上,以便用户可以通过访问该页面来自助注销账户。
  5. 用户自助注销:当用户需要注销账户时,只需访问注销页面,并按照页面上的提示进行操作。对于普通用户,通常需要勾选一个复选框以确认注销操作,然后点击注销按钮。一旦用户确认注销,账户信息将被立即删除,且无法恢复。

四、注意事项

  • 注销操作是不可逆的,一旦执行,所有与账户相关的信息都将被永久删除。
  • 管理员账户通常无法通过此插件进行注销,以确保网站的安全和管理功能不受影响。
  • 注销页面应放置在网站的明显位置,并提供清晰的引导信息,以便用户能够轻松找到并执行注销操作。
  • 考虑到数据保护法规的要求,网站应确保在注销过程中收集和处理用户数据的方式符合相关法律法规的规定。

五、总结

子比主题自助注销功能是一款实用的WordPress插件,它为用户提供了便捷的自助注销渠道,有助于保护用户隐私、遵守数据保护法规以及减少僵尸账户的残留。通过简单的操作流程,用户可以轻松地注销自己的账户并删除相关信息。

部署教程:

目前实现用户直接注销,注销后用户名和密码都为空,既无法登录,用户名改为该账号已注销。

代码并没有完善,存在以下缺点:

  1. 第一次访问点复选框点不了我要注销,但是html代码单独没有问题
  2. 注销的弹窗我没有写
  3. 操作的数据库,只修改了user表,其他表数据没有做修改
  4. 没有注销冷却期

部署代码:

[content_hide]

function zib_user_signout($buttons)
{
    $buttons[] = array(
        'html' => '',
        'icon' => zib_get_svg('user-color'),
        'name' => '我要注销',
        'tab'  => 'signout',
    );
    return $buttons;
}add_filter('zib_user_center_page_sidebar_button_1_args', 'zib_user_signout');


function zib_user_signout_page($tabs_array)
{
    $tabs_array['signout'] = array(
        'title'           => '我要注销',
        'nav_attr'        => 'drawer-title="我要注销"',
        'loader'          => '<div style="padding: 40px 20px;" class="colorful-bg c-blue flex jc zib-widget">
        <div class="colorful-make"></div>
        <div class="text-center">
            <div class="em4x">
                <svg class="icon" aria-hidden="true">
                    <use xlink:href="#icon-user-color"></use>
                </svg>
            </div>
            <div class="mt10 em14 padding-w10 font-bold mb40">我要注销</div>
            <div class="placeholder" style="width: 120px;height: 30px;"></div>
        </div></div>',
    );
    return $tabs_array;
}
add_filter('user_ctnter_main_tabs_array', 'zib_user_signout_page');

function zib_main_user_tab_content_signout()
{
    $current_user_id = get_current_user_id();
    $html = '<div style="padding: 40px 20px;" class="colorful-bg c-blue flex jc zib-widget">
        <div class="colorful-make"></div>
        <div class="text-center">
            <div class="em4x">
                <svg class="icon" aria-hidden="true">
                    <use xlink:href="#icon-user-color"></use>
                </svg>
            </div>
            <div class="mt10 em14 padding-w10 font-bold mb40">我要注销</div>
            <div class="em12 mt20 text-left">
                <p>注销账号后,您将无法恢复该账号的所有数据和内容,请确保您已经备份了重要的信息。</p>
                <p>如果您的账号有未完成的订单或其他重要事务,请先处理完毕再进行注销操作。</p>
                <p>注销账号可能需要一定时间,请耐心等待。</p>
            </div>
            <div class="mt20 text-left">
                <input type="checkbox" id="confirmSignout" name="confirmSignout">
                <label for="confirmSignout"> 我确定要注销我的账号</label>
            </div>
            <div class="mt40">
                <button class="btn btn-danger" id="signoutButton" disabled>我要注销</button>
            </div>
        </div></div>';

    $html .= '<script>
        document.addEventListener("DOMContentLoaded", function() {
            var signoutCheckbox = document.getElementById("confirmSignout");
            var signoutButton = document.getElementById("signoutButton");
            signoutCheckbox.addEventListener("change", function() {
                signoutButton.disabled = !this.checked;
            });

            signoutButton.addEventListener("click", function() {
                if (confirm("您确定要注销您的账号吗?该操作无法撤销!")) {
                    // 通过Ajax请求来处理注销
                    var xhr = new XMLHttpRequest();
                    xhr.open("POST", "' . admin_url('admin-ajax.php') . '", true);
                    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                    xhr.onload = function() {
                        if (xhr.status === 200) {
                            alert("您的账号已注销。");
                            location.reload();
                        } else {
                            alert("注销失败,请重试。");
                        }
                    };
                    xhr.send("action=zib_user_signout&user_id=' . $current_user_id . '");
                }
            });
        });
    </script>';

    return zib_get_ajax_ajaxpager_one_centent($html);
}
add_filter('main_user_tab_content_signout', 'zib_main_user_tab_content_signout');

function zib_user_signout_handler()
{
    if (isset($_POST['user_id']) && is_user_logged_in()) {
        $user_id = intval($_POST['user_id']);
        if ($user_id === get_current_user_id()) {
            global $wpdb;
            $wpdb->update(
                $wpdb->users,
                array(
                    'user_login'         => '',
                    'user_pass'          => '',
                    'user_nicename'      => '',
                    'user_email'         => '',
                    'user_url'           => '',
                    'user_activation_key'=> '',
                    'user_status'        => '',
                    'display_name'       => '该账号已注销'
                ),
                array('ID' => $user_id)
            );
            wp_logout();
            wp_send_json_success();
        } else {
            wp_send_json_error('无效的用户ID');
        }
    } else {
        wp_send_json_error('未登录或无效请求');
    }
}
add_action('wp_ajax_zib_user_signout', 'zib_user_signout_handler');

[/content_hide]

文章版权声明 1、本网站名称:派克资源
2、本站永久网址:https://www.pknn.net
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享