[第十七期]子比主题实现用户自助注销账号的代码教程

[第十七期]子比主题实现用户自助注销账号的代码教程

简介:从其他人的网站学会的美化,现在免费给大家使用

参考图

ac1b464738aba784add03603f1cf0ed9

将下方代码放在子比主题的func.php或者functions.php的文件中保存,最后清理缓存即可。

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');

如下图一样

414dc422a8ecf4a8973aed795712b1d2

教程结束

© 版权声明
THE END
喜欢就支持一下吧
点赞37 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容