下面是内存溢出 jb51.cc 通过网络收集整理的代码片段。内存溢出小编现在分享给大家,也给大家做个参考。
最近在开发 wordpress 主题过程中,用代码制作了前端用户中心,同时前端用户中心中还需要用户密码重置,我们可以通过短代码在主题的任何位置插入重置密码的表单:
第一步:
在 functions 当中插入如下代码:
function pippin_change_password_form() {
global $post;
if (is_singular()) :
$current_url = get_permalink($post->ID);
else :
$pageURL = 'http';
if ($_SERVER["httpS"] == "on") $pageURL .= "s";
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") $pageURL .= $_SERVER["SERVER_name"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
else $pageURL .= $_SERVER["SERVER_name"].$_SERVER["REQUEST_URI"];
$current_url = $pageURL;
endif;
$redirect = $current_url;
ob_start();
// show any error messages after form submission
pippin_show_error_messages(); ?>
<?PHP if(isset($_GET['password-reset']) && $_GET['password-reset'] == 'true') { ?>
<div >
<span><?PHP _e('Password changed successfully','rcp'); ?></span>
</div>
<?PHP } ?>
<form ID="pippin_password_form" method="POST" action="<?PHP echo $current_url; ?>">
<fIEldset>
<p>
<label for="pippin_user_pass"><?PHP _e('New Password','rcp'); ?></label>
<input name="pippin_user_pass" ID="pippin_user_pass" type="password"/>
</p>
<p>
<label for="pippin_user_pass_confirm"><?PHP _e('Password Confirm','rcp'); ?></label>
<input name="pippin_user_pass_confirm" ID="pippin_user_pass_confirm" type="password"/>
</p>
<p>
<input type="hIDden" name="pippin_action" value="reset-password"/>
<input type="hIDden" name="pippin_redirect" value="<?PHP echo $redirect; ?>"/>
<input type="hIDden" name="pippin_password_nonce" value="<?PHP echo wp_create_nonce('rcp-password-nonce'); ?>"/>
<input ID="pippin_password_submit" type="submit" value="<?PHP _e('Change Password','pippin'); ?>"/>
</p>
</fIEldset>
</form>
<?PHP
return ob_get_clean();
}
// password reset form
function pippin_reset_password_form() {
if(is_user_logged_in()) {
return pippin_change_password_form();
}
}
add_shortcode('password_form','pippin_reset_password_form');
function pippin_reset_password() {
// reset a users password
if(isset($_POST['pippin_action']) && $_POST['pippin_action'] == 'reset-password') {
global $user_ID;
if(!is_user_logged_in())
return;
if(wp_verify_nonce($_POST['pippin_password_nonce'],'rcp-password-nonce')) {
if($_POST['pippin_user_pass'] == '' || $_POST['pippin_user_pass_confirm'] == '') {
// password(s) fIEld empty
pippin_errors()->add('password_empty',__('Please enter a password,and confirm it','pippin'));
}
if($_POST['pippin_user_pass'] != $_POST['pippin_user_pass_confirm']) {
// passwords do not match
pippin_errors()->add('password_mismatch',__('Passwords do not match','pippin'));
}
// retrIEve all error messages,if any
$errors = pippin_errors()->get_error_messages();
if(empty($errors)) {
// change the password here
$user_data = array(
'ID' => $user_ID,
'user_pass' => $_POST['pippin_user_pass']
);
wp_update_user($user_data);
// send password change email here (if WP doesn't)
wp_redirect(add_query_arg('password-reset','true',$_POST['pippin_redirect']));
exit;
}
}
}
}
add_action('init','pippin_reset_password');
if(!function_exists('pippin_show_error_messages')) {
// displays error messages from form submissions
function pippin_show_error_messages() {
if($codes = pippin_errors()->get_error_codes()) {
echo '<div >';
// Loop error codes and display errors
foreach($codes as $code){
$message = pippin_errors()->get_error_message($code);
echo '<span ><strong>' . __('Error','rcp') . '</strong>: ' . $message . '</span><br/>';
}
echo '</div>';
}
}
}
if(!function_exists('pippin_errors')) {
// used for tracking error messages
function pippin_errors(){
static $wp_error; // Will hold global variable safely
return isset($wp_error) ? $wp_error : ($wp_error = new WP_Error(null,null,null));
}
}
第二步:
在你需要的地方插入:
[password_form]
以上是内存溢出(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
总结以上是内存溢出为你收集整理的WordPress主题实现前台用户重置密码功能全部内容,希望文章能够帮你解决WordPress主题实现前台用户重置密码功能所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)