关于wordpress用户系统的几个代码小片段
2013-12-08 12:12
746 查看
一个网站的发展是不可能一个人完全包揽的下来的,小网站还好点,一旦网站到了一定规模一个人维护网站是不现实的,那样很容把身体拖垮而且一个人也不可能面面俱到,到了那个时候网站开放注册让用户来为网站生产内容是必然的,这里小V分享一些关于wordpress系统的小代码片段给大家使用。
大家都知道由于wordpress是老美生产的东西,所以对中文支持还不够完美,尤其是新用户注册时不能使用中文用户名这点最坑爹,中文网站不支持中文名这尼玛还得了啊?!那么如何让wordpress支持新用户使用中文用户名注册网站呢?实现方法很简单,将以下php代码复制到当前主题目录下的functions.php中,即可让WordPress支持使用中文用户名注册和登录,代码如下:
大家都知道由于wordpress是老美生产的东西,所以对中文支持还不够完美,尤其是新用户注册时不能使用中文用户名这点最坑爹,中文网站不支持中文名这尼玛还得了啊?!那么如何让wordpress支持新用户使用中文用户名注册网站呢?实现方法很简单,将以下php代码复制到当前主题目录下的functions.php中,即可让WordPress支持使用中文用户名注册和登录,代码如下:
function v7v3_cn_login( $username, $raw_username, $strict ) { if( !$strict ) return $username; return sanitize_user(stripslashes($raw_username), false); } add_filter('sanitize_user', 'v7v3_cn_login', 10, 3);不知道大家有没有发现这个细节,就是在wordpress网站注册新用户后,注册成功了还要重新登录,其实这样用户体验非常不好,我们可以稍微修改下让新用户在wordpress网站注册后自动登录并且转跳到指定页面,代码如下:
function v7v3_new_user( $user_id ) { wp_set_current_user($user_id); wp_set_auth_cookie($user_id); // 这里设置的是跳转到首页,要换成其他页面 wp_redirect( 'http://www.v7v3.com' ); exit; } add_action( 'user_register', 'v7v3_new_user' );discuz大家一定不陌生吧?国内最火的论坛建站程序,不知道大家有没有注意到discuz的用户在注册后可以用用户名或者注册邮箱(E-mail)两种方式来登录网站,而wordpress却不支持用户使用注册邮箱(E-mail)来登录网站,那么如何让wordpress支持用户使用注册邮箱(E-mail)来登录网站呢?一段代码即可搞定:
// 修改WordPress用户名过滤机制,通过Email获取用户名 function v7v3_email_login($username, $raw_username, $strict) { if (filter_var($raw_username, FILTER_VALIDATE_EMAIL)) { $user_data = get_user_by('email', $raw_username); if (empty($user_data)) wp_die(__('<strong>ERROR</strong>: There is no user registered with that email address.'), '用户名不正确'); else return $user_data->user_login; } else { return $username; } } // 修改登录界面的文字,"用户名"改成"用户名或邮箱" function v7v3_change_text() { echo '<script type="text/javascript"> var user_login_node = document.getElementById("user_login"); var old_username_text = user_login_node.parentNode.innerHTML; user_login_node.parentNode.innerHTML = old_username_text.replace(/用户名/, "用户名或邮箱"); </script>'; } if (in_array($GLOBALS['pagenow'], array('wp-login.php')) && strpos($_SERVER['REQUEST_URI'], '?action=register') === FALSE && strpos($_SERVER['REQUEST_URI'], '?action=lostpassword') === FALSE && strpos($_SERVER['REQUEST_URI'], '?action=rp') === FALSE ) { add_filter('sanitize_user', 'v7v3_email_login', 10, 3); add_action('login_footer', 'v7v3_change_text'); }说完了登录现在来说下登出,默认的wordpress系统登出后是转跳到/wp-login.php这个登录界面下,这样的话小V个人觉得对于用户体验不是很好,那么如何让wordpress退出后转跳到指定页面呢?一段代码即可实现:
add_filter('logout_url', 'v7v3_logout_redirect', 10, 2); function v7v3_logout_redirect($logouturl, $redir) { $redir = 'http://www.v7v3.com/'; // 这里改成你要跳转的网址 return $logouturl . '&redirect_to=' . urlencode($redir); }最后再来说说如何让网站用户知道网站有文章更新呢?让用户主动去订阅网站,这个显然不是所有用户都会去做的,而且feed订阅的文章也不是实时更新的,而是每天定时抓取更新的,其实我们可以通过给用户注册时使用的邮箱发送邮件来提示用户网站有文章更新了,代码如下:
function newPostNotify($post_ID) { if( wp_is_post_revision($post_ID) ) return; global $wpdb; $get_post_info = get_post($post_ID); if ( $get_post_info->post_status == 'publish' && $_POST['original_post_status'] != 'publish' ) { // 读数据库,获取所有用户的email $wp_user_email = $wpdb->get_col("SELECT DISTINCT user_email FROM $wpdb->users"); // 邮件标题 $subject = 'xx博客有新文章'; // 邮件内容 $message = '文章标题:' . get_the_title($post_ID) . '<br />'; $message .= '文章网址:<a href="' . get_permalink($post_ID) . '">' . get_permalink($post_ID) . '</a><br />'; // 发邮件 $message_headers = "Content-Type: text/html; charset=\"utf-8\"\n"; wp_mail($wp_user_email, $subject, $message, $message_headers); } } // 钩子,一旦WordPress有新文章发布或文章被修改即刻执行newPostNotify函数 add_action('publish_post', 'newPostNotify');本文中所有代码都是加到functions.php文件即可。(PS:本文部分代码参考自露兜博客)
相关文章推荐
- Android常用的几个系统参数相关代码片段
- 内核代码中和用户栈相关的几个片段
- 关于 Xcode 自己设置的可复用的 代码片段 Code Snippets
- 关于系统用户数,并发用户数,在线用户数,吞吐量
- 关于:bs结构系统,一个用户只能同时一人在线的实现
- 几个比较实用的wordpress函数代码小片段
- 关于wordpress系统的使用
- 几个有用的JavaScript/jQuery代码片段
- 关于更新windows Service Pack 3 更新后系统登录出现“一个问题阻止Windows正确检查机器的许可证。错误代码 0x80070002”问题解决方案
- 关于用户升级到MacOS10.10系统后versions崩溃的问题
- 常用代码之四:创建jason,jason转换为字符串,字符串转换回jason,c#反序列化jason字符串的几个代码片段
- 关系管理系统:CustomerDaoimpl中添加用户代码add()
- 用户推荐系统_python 代码
- 分享几个非常有用的PHP代码片段
- 关于9行代码导致系统崩溃的分析整理
- 关于微信支付参数[签名]字段-Java代码片段
- 系统的简单注解 - 17 用户进程2的代码
- 关于SubSonic3.0生成的表名自动加复数(s)的“用户代码未处理SqlException,对象名'xxxs'无效”异常处理
- 常用的几个JQuery代码片段
- 判断用户使用的浏览器是否对系统合适的脚本代码