博客

WordPress 教程:实现用户使用 Email 地址登录

在忘记注册的用户名的情况下,我们可以在登录界面增加一个“使用Email登录”的选项。添加以下代码至 functions.php 文件。

//remove wordpress authentication
remove_filter('authenticate', 'wp_authenticate_username_password', 20);
 
add_filter('authenticate', function($user, $email, $password){
 
 //Check for empty fields
 if(empty($email) || empty ($password)){ 
 //create new error object and add errors to it.
 $error = new WP_Error();
 
 if(empty($email)){ //No email
 $error->add('empty_username', __('<strong>ERROR</strong>: Email field is empty.'));
 }
 else if(!filter_var($email, FILTER_VALIDATE_EMAIL)){ //Invalid Email
 $error->add('invalid_username', __('<strong>ERROR</strong>: Email is invalid.'));
 }
 
 if(empty($password)){ //No password
 $error->add('empty_password', __('<strong>ERROR</strong>: Password field is empty.'));
 }
 
 return $error;
 }
 
 //Check if user exists in WordPress database
 $user = get_user_by('email', $email);
 
 //bad email
 if(!$user){
 $error = new WP_Error();
 $error->add('invalid', __('<strong>ERROR</strong>: Either the email or password you entered is invalid.'));
 return $error;
 }
 else{ //check password
 if(!wp_check_password($password, $user->user_pass, $user->ID)){ //bad password
 $error = new WP_Error();
 $error->add('invalid', __('<strong>ERROR</strong>: Either the email or password you entered is invalid.'));
 return $error;
 }else{
 return $user; //passed
 }
 }
}, 20, 3);
标准
博客

WordPress 插件:移动端解决方案 主题调度插件分享

随着智能手机的越来越强大和普及,使用手机浏览网站的用户越来越多了,就需要为网站的手机用户提供更好的浏览体验,下面介绍几款 WordPress 手机主题调度插件,支持自动识别手机客户端,并切换到手机主题,可快速解决移动端问题。由于手机主题对功能的精简,其载入速度相对快一些,而且可以为不同的设备显示不同的主题。

WPtouch

说到 WordPress 手机主题插件,大家都应该知道鼎鼎大名的 WPtouch,自动将网站转为手机版,具有良好的 ajax 加载效果和流畅的体验。支持 iPhone, iPod touch, Android , BlackBerry OS6+ 等手机客户端,但不能添加第三方的手机主题,只可以购买它本身支持的其他的主题。自带灵活的后台设置选项。可以下载免费版使用。

 

WordPress Mobile Pack

WordPress Mobile Pack 也是比较强大的手机主题调度插件,自带基本的手机主题,允许添加自定义的手机主题,支持多站点模式,还具备手机用户统计功能。

阅读全文

标准
博客

WordPress 教程:后台文章列表按更新时间排序

以下方法可以使后台的文章列表按最后修改的时间排序。在当前主题的 functions.php 中添加以下代码即可:

function set_post_order_in_admin( $wp_query ) {
 if ( is_admin() ) {
 $wp_query->set( 'orderby', 'modified' );
 // 此处是将最新修改的文章排在前面
 // 如果要将最新修改的文章排在后面,可将DESC改成ASC
 $wp_query->set( 'order', 'DESC' );
 }
 }
 add_filter('pre_get_posts', 'set_post_order_in_admin' );
标准
博客

WordPress 优化:给网站加速的16条建议

1.选择一个好的主机

对于在使用免费主机或者共享主机(Godaddy啊、Bluehost啊等等所谓无限带宽、无限网站之类的主机)的读者来说,你可以直接忽略掉这一小节了。

首先,你的域名和你的主机最好在一个IDC哪儿,如果不是的话,建议你采用口碑良好的DNS服务商,让域名以最快的速度解析到主机上,这不是重点,重点是你的服务器/主机空间应该够快,怎么才能够快呢?CPU的配置、CPU的使用率、物理内存的大小、磁盘类型以及磁盘的I/O性能(包括Mysql数据库服务器所用磁盘)、Mysql响应速度以及Mysql并发数等等,都会影响到网站的快与不快,并且是物理性的影响。

 

2.选择一个更快的主题

什么样的主题才能更快呢?直观来看,包含尽量少的php、js、css和字体(字体或图标字体)文件的主题性能会好些。从代码来看,编码合理并在正确的页面载入正确的文件的主题会好些。

 

3.选择一个缓存插件

推荐使用 W3 Total Cache 或者 WP Super Cache ,都是免费的,但是都很好使,我个人更喜欢W3 Total Cache,因为它支持:页面缓存、HTML压缩、对象缓存、数据库缓存、客户端浏览器缓存、以及CDN。

阅读全文

标准
博客

WordPress 函数:count_user_posts 获取用户文章数

count_user_posts 是一个用来获取用户文章数量的 WordPress 函数,具体代码如下:

function count_user_posts( $userid, $post_type = 'post' ) {
 global $wpdb;
 
 $where = get_posts_by_author_sql( $post_type, true, $userid );
 
 $count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts $where" );
 
 /**
 * Filter the number of posts a user has written.
 *
 * @since 2.7.0
 * @since 4.1.0 Added `$post_type` argument.
 *
 * @param int $count The user's post count.
 * @param int $userid User ID.
 * @param string $post_type Post type to count the number of posts for.
 */
 return apply_filters( 'get_usernumposts', $count, $userid, $post_type );
}

阅读全文

标准