Files
wordpress-theme-aksrt/templates/pages/page-profile.php
T

71 lines
3.3 KiB
PHP

<?php
/**
* Template Name: 用户中心
* Template Post Type: page
*
* Logged-in users manage their own account here. Public profiles are served by
* page-user-home.php and author.php.
*
* @package AKSRT
*/
defined('ABSPATH') || exit;
if (!is_user_logged_in()) {
wp_safe_redirect(aksrt_get_login_url(aksrt_get_user_center_url()));
exit;
}
$current_user = wp_get_current_user();
$user_id = (int) $current_user->ID;
if ('POST' === ($_SERVER['REQUEST_METHOD'] ?? '') && isset($_POST['action']) && 'aksrt_save_profile' === sanitize_key(wp_unslash($_POST['action']))) {
$nonce = isset($_POST['_profile_nonce']) ? sanitize_text_field(wp_unslash($_POST['_profile_nonce'])) : '';
if (!wp_verify_nonce($nonce, 'aksrt_profile_save')) {
$result = new WP_Error('aksrt_profile_nonce', __('安全验证失败,请刷新页面重试', 'aksrt'));
} else {
$result = aksrt_save_user_center_profile($user_id, $_POST);
}
$redirect_args = is_wp_error($result)
? ['profile_error' => $result->get_error_message()]
: ['saved' => '1'];
wp_safe_redirect(add_query_arg($redirect_args, aksrt_get_user_center_tab_url('profile')));
exit;
}
$render_context = aksrt_get_user_center_render_context($current_user);
get_header();
?>
<div id="toast-container"></div>
<script>function showToast(text,d){d=d||2500;var c=document.getElementById('toast-container');if(!c){c=document.createElement('div');c.id='toast-container';document.body.appendChild(c)}var t=document.createElement('div');t.className='toast-item';t.textContent=text;c.appendChild(t);setTimeout(function(){t.classList.add('fade-out');setTimeout(function(){if(t.parentNode)t.parentNode.removeChild(t)},300)},d)}</script>
<main id="main-content" class="site-main container content-shell content-shell--stream aksrt-profile user-center" tabindex="-1">
<div class="content-wrap">
<?php get_template_part('templates/parts/user-center/header', null, ['context' => $render_context]); ?>
<div class="user-center-body aksrt-profile__layout">
<aside class="user-center-sidebar uc-sidebar aksrt-profile__aside" role="complementary" aria-label="<?php esc_attr_e('用户中心导航', 'aksrt'); ?>">
<?php get_template_part('templates/parts/user-center/sidebar', null, ['context' => $render_context]); ?>
</aside>
<div class="user-center-content uc-content">
<div class="uc-drawer-overlay" id="uc-drawer-overlay"></div>
<?php if (isset($_GET['saved'])) : ?>
<div class="aksrt-user-center__notice" role="status"><?php esc_html_e('个人资料已保存', 'aksrt'); ?></div>
<?php elseif (isset($_GET['profile_error'])) : ?>
<div class="aksrt-user-center__notice aksrt-user-center__notice--error" role="alert"><?php echo esc_html(wp_unslash($_GET['profile_error'])); ?></div>
<?php endif; ?>
<?php get_template_part('templates/parts/user-center/mobile-tabs', null, ['context' => $render_context]); ?>
<?php foreach ($render_context['panels'] as $panel) : ?>
<?php get_template_part('templates/parts/user-center/panel', null, ['panel' => $panel]); ?>
<?php endforeach; ?>
<?php get_template_part('templates/parts/user-center/account-modals', null, ['context' => $render_context]); ?>
</div>
</div>
</div>
<?php get_template_part('templates/parts/user-center/runtime-config', null, ['context' => $render_context]); ?>
</main>
<?php
get_footer();