修改WORDPRESS主题注册页面直接输入密码

之前一直想修改表单,但由于博客一般只是自己登录,很少有人注册,所以一直懒得修改,借助升级WORDPRESS5.3版本,修改下注册表单和登录页面logo描述及连接。下面先说说修改注册表单。

WORDPRESS

注册页面修改是参照露兜博客进行的修改,原文地址:点击查看 代码如下,添加在模版函数文件functions.php中即可。至于问题自己可以diy。。

/*
Plugin Name: Ludou Custom User Register
Plugin URI: http://www.ludou.org/wordpress-ludou-custom-user-register.html
Description: 修改默认的后台用户注册表单,用户可以自行输入密码,不必用Email接收密码,跳过Email验证。用户可自行选择注册的身份角色。
Version: 1.0
Author: Ludou
Author URI: http://www.ludou.org
*/
if (!isset($_SESSION)) {
 	session_start();
	session_regenerate_id();
}
/**
 * 后台注册模块,添加注册表单,修改新用户通知。
 */
if ( !function_exists('wp_new_user_notification') ) :
/**
 * Notify the blog admin of a new user, normally via email.
 *
 * @since 2.0
 *
 * @param int $user_id User ID
 * @param string $plaintext_pass Optional. The user's plaintext password
 */
function wp_new_user_notification($user_id, $plaintext_pass = '', $flag='') {
	if(func_num_args() > 1 && $flag !== 1)
		return;

	$user = new WP_User($user_id);

	$user_login = stripslashes($user->user_login);
	$user_email = stripslashes($user->user_email);

	// The blogname option is escaped with esc_html on the way into the database in sanitize_option
	// we want to reverse this for the plain text arena of emails.

	$message  = sprintf(__('New user registration on your site %s:'), $blogname) . "\r\n\r\n";
	$message .= sprintf(__('Username: %s'), $user_login) . "\r\n\r\n";
	$message .= sprintf(__('E-mail: %s'), $user_email) . "\r\n";

	@wp_mail(get_option('admin_email'), sprintf(__('[%s] New User Registration'), $blogname), $message);

	if ( empty($plaintext_pass) )
		return;

	$message  = sprintf(__('Username: %s'), $user_login) . "\r\n";
	$message .= sprintf(__('Password: %s'), $plaintext_pass) . "\r\n";
	$message .= '登陆网址: ' . wp_login_url() . "\r\n";

	wp_mail($user_email, sprintf(__('[%s] Your username and password'), $blogname), $message);

}
endif;	$blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);

/* 修改注册表单 */
function ludou_show_password_field() {
	// 生成token,防止恶意注册
	$token = md5(uniqid(rand(), true));
	$_SESSION['ludou_register_abc_token'] = $token;
?>
<p>
	<label>密码(至少6位)<br/>
		<input  class="input" type="password" size="25" value="<?php echo $_POST['user_pass']; ?>" name="user_pass"/>
	</label>
</p>
<p>
	<label>重复密码<br/>
		<input  class="input" type="password" size="25" value="<?php echo $_POST['user_pass2']; ?>" name="user_pass2" />
	</label>
</p>
 <p>
    <label><?php _e('请输入本站域名:sheruo.com') ?><br />
        <input type="text" name="user_proof" id="user_proof" class="input" size="25" tabindex="20" /></label>
    </p>
<input type="hidden" name="spam_check" value="<?php echo $token; ?>" />
<?php
}

/* 处理表单提交的数据 */
function ludou_check_fields($login, $email, $errors) {
	if(!isset($_POST['spam_check']) || $_POST['spam_check'] != $_SESSION['ludou_register_abc_token'])
		$errors->add('spam_detect', "<strong>错误</strong>:请勿恶意注册");
	if(strlen($_POST['user_pass']) < 6 || strlen($_POST['user_pass2']) < 6)
		$errors->add('password_length', "<strong>错误</strong>:密码长度至少6位");
	elseif($_POST['user_pass'] != $_POST['user_pass2'])
		$errors->add('password_error', "<strong>错误</strong>:两次输入的密码必须一致");
	 // 如果没有回答
    if (!isset($_POST[ 'user_proof' ]) || empty($_POST[ 'user_proof' ])) {
        return $errors->add( 'proofempty', '<strong>错误</strong>: 您还没有输入最下方问题。'  );
    // 如果答案不正确
    } elseif ( strtolower( $_POST[ 'user_proof' ] ) != 'sheruo.com' ) {
        return $errors->add( 'prooffail', '<strong>错误</strong>: 您的问题回答不正确。'  );
    }
}

/* 保存表单提交的数据 */
function ludou_register_extra_fields($user_id, $password="", $meta=array()) {
	$userdata = array();
	$userdata['ID'] = $user_id;
	$userdata['user_pass'] = $_POST['user_pass'];

	wp_new_user_notification( $user_id, $_POST['user_pass'], 1 );
	wp_update_user($userdata);
	
	$_SESSION["ludou_register_abc_token"] = NULL;
	unset($_SESSION["ludou_register_abc_token"]);
}

function ludou_register_change_translated_text( $translated_text, $untranslated_text, $domain ) {
  if ( $untranslated_text === 'A password will be e-mailed to you.' || $untranslated_text === 'Registration confirmation will be emailed to you.' )
    return '';
  else if ($untranslated_text === 'Registration complete. Please check your e-mail.' || $untranslated_text === 'Registration complete. Please check your email.')
    return '注册成功!';
  else
    return $translated_text;
}

add_filter('gettext', 'ludou_register_change_translated_text', 20, 3);
add_action('register_form','ludou_show_password_field');
add_action('register_post','ludou_check_fields',10,3);
add_action('user_register', 'ludou_register_extra_fields');

下面说说修改logo及描述连接,我是直接参考wp大学给出的简单方式,丢一段代码到 functions.php中 ,省的每次升级都要改原文件。代码如下。有不清楚的可以留言哦。

//自定义登录页面的LOGO链接为首页链接及描述
add_filter('login_headerurl', create_function(false,"return get_bloginfo('url');"));
add_filter('login_headertitle', create_function(false,"return get_bloginfo('name');"));
//自定义登录页面的LOGO
function custom_loginlogo() {
echo '<style type="text/css">
h1 a {background-image: url('.get_stylesheet_directory_uri().'/images/login_logo.png) !important; }
</style>';
}
add_action('login_head', 'custom_loginlogo');

修改WORDPRESS主题注册页面直接输入密码》有2个想法

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注