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

注册页面修改是参照露兜博客进行的修改,原文地址:点击查看 代码如下,添加在模版函数文件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');
走访下
@叶忠文博客 欢迎来访