我花费数天和数天的时间来编写一个前端用户个人资料页面,其中登录用户可以编辑他们的数据,但似乎没有正确的方法可以做到这一点。网上没有人似乎在不使用插件的情况下解释一种安全且编码良好的方法。
所以,我创建了一个名为profile-page.php的文件
<?php
/*
* Template Name: User Profile
* Allow users to update their profiles from Frontend.
*/
global $current_user, $wp_roles;
get_currentuserinfo();
/* Someone do not use global variable
but this code: (which one is better?)
require_once( ABSPATH . 'wp-admin/includes/user.php' );
require_once( ABSPATH . 'wp-admin/includes/misc.php' );
define( 'IS_PROFILE_PAGE', true );
wp_enqueue_script( 'user-profile' );
$current_user = wp_get_current_user();
*/
if ( 'POST' == $_SERVER['REQUEST_METHOD'] ) {
check_admin_referer( 'update-user_' . $current_user->ID );
if ( ! current_user_can( 'edit_user', $current_user->ID ) )
wp_die( __( 'Error Message' ) );
$errors = edit_user( $current_user->ID );
// Save
if ( ! is_wp_error( $errors ) ) {
$message = __( '<strong>Success</strong>: Profile updated', '' );
$style = 'success';
do_action( 'personal_options_update', $current_user->ID ); // Save all data in db
wp_redirect( get_permalink() );
exit;
// Error
} else {
$message = $errors->get_error_message();
$style = 'error';
}
}
get_header();
?>
<div id="profile-user">
<!-- welcome message -->
<?php if ( !is_user_logged_in() ) : ?>
<p class="warning">
<?php _e('You must log in to edit.', 'textdomain'); ?>
</p>
<?php else : ?>
<?php echo '<p>Welcome <strong>'. $current_user->first_name .'</strong></p>'; ?>
<!-- error/success message -->
<?php
if ( isset( $message ) ) {
echo '<div class="' . $style . '">' . $message . '</div>';
} ?>
<form class="" action="<?php the_permalink(); ?>" method="post" id="your-profile">
<?php wp_nonce_field( 'update-user_' . $current_user->ID ); ?>
<input type="hidden" name="from" value="profile" />
<input type="hidden" name="checkuser_id" value="<?php echo $current_user->ID; ?>" />
<!-- HERE ALL MY FORM INPUT (I show you only one for exemple) -->
<input type="text" name="first_name" id="input_01" value="<?php echo esc_attr( get_the_author_meta( 'first_name', $user->ID ) ); ?>" />
<input type="hidden" name="action" value="profile" />
<input type="hidden" name="user_id" id="user_id" value="<?php echo esc_attr( $current_user->ID ); ?>" />
<input type="submit" class="button-primary" value="<?php esc_attr_e( 'Save' ); ?>" name="submit" />
</form>
</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
你怎么看?这是正确的方法吗?安检是否合适? 它不起作用!
请帮助我!
由于