LeoTalk.cn
自由、随心、随性!

[纯代码]教你怎样为WordPress主题添加读者墙的方法

今天给大家分享一下为wordpress主题模板添加读者墙功能的方法实现,本代码可以应用与主题侧边栏与页面,而且样式非常华丽,下面我们以PAGES页面添加为示例来给大家演示一下操作过程。

第一步:在wordpress核心文件内添加读者墙函数

在function.php文件内添加如下代码

//wordpress读者墙-wazhuti.comfunction readers_wall( $outer='.',$timer='30',$limit='18' ){ global $wpdb; $counts = $wpdb->get_results("select count(comment_author) as cnt, comment_author, comment_author_url, comment_author_email from (select * from $wpdb->comments left outer join $wpdb->posts on ($wpdb->posts.id=$wpdb->comments.comment_post_id) where comment_date > date_sub( now(), interval $timer month ) and user_id='0' and comment_author != '".$outer."' and post_password='' and comment_approved='1' and comment_type='') as tempcmt group by comment_author order by cnt desc limit $limit"); foreach ($counts as $count) { $avatar_url = get_bloginfo('wpurl') . '/wp-content/avatar/' . md5(strtolower($count->comment_author_email)); $c_url = $count->comment_author_url; if ($c_url == '') $c_url = ''; $page .= '<li><a target="_blank" rel="external nofollow" alt="' . $count->comment_author . '" href="'.%20$c_url%20.%20'"><span class="pic"><img src="'%20.%20$avatar_url%20.%20'.jpg" /></span><span class="num"><strong>'. $count->cnt . '+</strong></span><span class="name">' . $count->comment_author . '</span></a></li>'; } echo $page;};

注$limit=’18’ ,即显示为18个读者。请在/wp-content/目录下新建avatar文件夹,用来存放头像缓存文件。

第二步:添加读者墙相应CSS样式

/*读者墙*/.readers{margin:0px 8px 150px;width:290px}.readers ul{list-style: none outside none;margin-left: 0px;}.readers li{list-style: none outside none;margin: 0px 3% 15px;}.readers a{width:36px;height:36px;display:block;float:left;position:relative;margin:0 8px 8px 0}.readers .pic{position:absolute;top:0;left:0;z-index:100;width:36px;height:36px;display:block;-webkit-transform-style:preserve-3d;-webkit-backface-visibility:hidden;-webkit-transition:all .4s ease-in-out;-moz-transition:all .4s ease-in-out;}.readers .pic img{border-radius:4px;width:36px;height:36px}.readers .num{position:absolute;top:0;left:0;z-index:99;width:34px;height:34px;line-height:34px;color:#e02523;font-size:18px;font-weight:bold;display:block;background-color:#fff;text-align:center;border:#bbb 1px solid;-webkit-transform:rotatey(-180deg);-webkit-transform-style:preserve-3d;-webkit-backface-visibility:hidden;transition:all .4s ease-in-out;-webkit-transition:all .4s ease-in-out;-moz-transition:all .4s ease-in-out;border-radius:4px}.readers .name{position:absolute;top:0;left:0;color:#333;display:block;width:1px;height:1px;overflow:hidden;-webkit-transform-style:preserve-3d;-webkit-backface-visibility:hidden;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;text-align:center}.readers a:hover .pic{z-index:100;border-color:#eee;-webkit-transform:rotatey(180deg);-moz-transform:rotatey(180deg)}.readers a:hover .num{z-index:101;-webkit-transform:rotatey(0deg);-moz-transform:rotatey(0deg);opacity:.8}.readers a:hover .name{top:-28px;left:-38px;z-index:101;padding:4px 6px;height:20px;line-height:20px;overflow:hidden;background-color:#fff;border-radius:2px;box-shadow:0 0 3px #000;min-width:100px;opacity:.8}.readers a:nth-child(n+8):hover .name{top:36px}

第三步:调用读者墙函数

在需要调用读者墙的位置添加如下代码

<?php readers_wall(); ?>

增强WordPress网站安全,需要注意这10个问题点

本文主要讲了通过十种方式,来强化wordpress网站整体的安全性,其实这些都是必要性的安全防护,但应用了以下操作后,并不代码你的wordpress网站,不会被黑客入侵,只是多了一层防护而已,降低被攻击几率。

一、限制Wp-Admin目录IP
管理wordpress网站通常只会有两到三个固定几个IP,为了保证网站的安全,下面这个方法可以限制读取wp-admin目录的IP或者IP网段,非指定的IP(或者IP网段)就无法访问后台,
新建.htaccess文件,并将文件上传到“wp-admin”目录下。这段语法的判断流程简言之就是先封锁有所IP,然后开放允许的IP,所以将“allow from 12.34.56.78”的12.34.56.78改成你的IP。如果是一个网段,可以输入“ 12.34.56.”
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName “WordPress Admin Access Control”
AuthType Basic
order deny,allow
deny from all
allow from 12.34.56.78

二、限制存取Wp-Includes目录
“wp-includes”这个目录是系统的一些核心目录,还有”/wp-admin/wp-includes”和,”/wp-includes”在我们的网站页面上并没有哪个页面有URL会指向这些地方(通常这个目录里的文件只能被被管理者修改或者代码里调用的)。用以下这段语法可以限制存取的权限,请将下面的代码加入到根目录的.htaccess文件中。
此为官方建议设定。
# Block the include-only files.
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ – [F,L]
RewriteRule !^wp-includes/ – [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ – [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php – [F,L]
RewriteRule ^wp-includes/theme-compat/ – [F,L]
# BEGIN WordPress
如果没有加入以上语法,会显示错误讯息;如果加了以上语法,会显示WordPress的默认404页面:告诉你目录不存在,这样是一个比较安全的防护措施。

三、限制Wp-Login.Php登入IP
如果你网站没有开放注册,那你可以执行这项的方法,限制允许访问wp-login.php只有网站的管理者,设定方法和前面的限制wp-admin存取IP方法类似,请将“12.34.56.78”改成你允许的IP或是网段。
Order deny,allow
Deny from All
Allow from 12.34.56.78

四、限制上传大小
避免黑客透过Dos攻击,利用传输大文件来冲爆你的流量,所以可以透过限制单档大小来阻绝这样的一个状况发生,将以下语法加入到根目录的.htaccess文件中即可,极客人的预设是10MB。
LimitRequestBody 10240000

五、保护Wp-Config.Php配置文件
用过WordPress都知道”wp-config.php”这个文件攸关整个系统的运行,少了它或者配置错误连不上数据库,因为这个文件内保存了MySQL的账号与密码,为了保护这个文件,WordPress官方有个建议,就是先将此文件权限设定为”400”,也就是只允许拥有人权读取。不过设400可能会让一些插件例如wp super cache要写入设定值时发生错误,所以请大家斟酌裁定。
不过保护wp-config.php重头戏是设定.htaccess目录,修改根目录的.htaccess目录,加入以下语法,这语法意思是:禁止所有人浏览(主机内的程序是可以正常读取的)。
此为官方建议的设置方法:
order allow,deny
deny from all

六、防垃圾留言攻击
以下这段语法是保护你的留言防止被机器人垃圾留言攻击,主要屏蔽没有referrer的请求,但极客人使用过后发现成效有限,建议再加装Akismet和quiz保护会更好。请将下述代码加入到根目录的.htaccess文件,其中的”wangbaiyuan.cn”请换成你自己的网站网址。
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*wangbaiyuan.cn.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]

七、禁止目录索引
如果你的虚拟主机没有开启禁止目录索引功能,请您务必加上此语法以保护没有index目录的目录,避免被恶意人士将网站内容全部下载。
Options -Indexes

八、账号安全
WordPress系统默认安装是采用admin账号,不过后来的版本允许使用者自行选择网站管理员账号,以避免恶意用户想要尝试admin登入网站。如果你本身已经使用admin,请赶快换账号吧!不然黑客轻易的就可以猜到你账号,接下来猜出密码应该很快了。另外建议使用Limit Login Attempts强化登入安全,当然您也要设一个不易猜出的密码。

九、关闭后台主题编辑功能
WordPress后台的主题一旦权限开放就可以在后台直接编辑,如果没有开放则只可浏览。主机若有安装suPHP默认就是可以编辑。如果你觉得这项功能用不到,建议您可以关闭它,毕竟直接暴露在后台可以编辑是一件很危险的事情,除了可能因为黑客入侵乱改,也可能自己改错造成网站出错。请将以下语法加入倒wp-config.php适当位置,就可以关闭修改的权限了。
define(‘DISALLOW_FILE_EDIT’, true);

十、限制 .Htaccess 访问权限
当以上的东西调整完之后,别忘了强化你的.htaccess目录本身权限。将以下语法加入到.htaccess目录内已启用自我保护。语法是禁止所有人直接浏览该目录,但是系统使用读取是允许的。
order allow,deny
deny from all

总结,最后还需要大家做好wordpress管理员账号密码的保护,以防被暴力破解,再次提醒,以上方法只是加强WordPress安全,但无法保证百毒不侵,仍有机会遭受到黑客入侵,通常状况可能是您帐密外泄、网站插件、主题有漏洞、系统有不明的漏洞,还有目录权限设定不正确等等的状况,各位还是要多多注意。

教你wordpress开启全站https操作步骤

当前https是互联网的大势所趋,大型门户网站纷纷采用了更加安全的htts协议,而且对于小程序来进行关联都需要用到https才能通过审核。

wordpress的https化整体需要两个步骤,第一个步骤为前期的ssl证书申请和安装,第二个步骤为wordpress网站https全站配置,第一步我们简单代过,因为在不同的阿云及腾讯去证书下载处都有相应的证书安装使用说明,并且非常详细。而且如果你是用的宝塔面板就更加简单,在网站设置里就可以复制使用。

wordpress开启https

申请SSL证书
那我们需要知道启用https需要配置SSL证书,国内的阿里云、腾讯云、七牛都有免费的证书可以申请使用。

安装SSL证书
成功申请到SSL证书之后,下载证书,分别是Apache、IIS、Nginx服务器的证书文件,根据不同的服务器类型进行证书安装方法的示例,教程很详细我们可以参考一下,https://cloud.tencent.com/document/product/400/4143

wordpress网站配置https
1、进入WP后台,进入设置-常规 将WordPress地址(URL)、站点地址(URL)两项修改为:https。

WordPress启用https访问实战教程

2、登录和后台强制开启SSL。

通过修改WP-config.php文件,直接在文件末尾加入以下两行代码:

123 /* 强制后台和登录使用 SSL */define('FORCE_SSL_LOGIN', true);define('FORCE_SSL_ADMIN', true);

3、为了保证WordPress站点之前添加的各个链接或者多媒体文件把http协议改成https协议,我们还需要通过数据库SQL查询执行一条替换命令,代码如下:(使用时请按照自己数据库表名(wp_posts)和网站域名修改后在执行即可。)

1 update wp_posts set post_content = replace(post_content, 'http://ws234.com','https://ws234.com');

4、最后一步,我们要做的就是把一系类的外部链接改到https地址,同时访问一下https版本页面,包括首页、栏目页、内页、sitemap,查一下源代码,或是css和js的cdn,都要做相应的修改。

wordpress性能优化方案 全面提升wordpress打开速度

接触wordpress也些年头了,wordpress建站非常好,性能好、主题多,但是唯一诟病的就是wordpress打开速度慢,造成wordpress访问速度慢的原因有很多,比如字体、表情emoji、插件、主题等因素。多了就不说了,今天咱们就来解决wordpress访问速度这个问题。

入局wordpress多年,我一直崇拜水煮鱼大神,他的网站一直是我的标杆。他的网站做的很棒,网站响应能达到0.00X秒级别。虽然大神也公布了自己网站的wordpress优化方案,但是对于一些小白来说,操作上手还是非常困难的。

先来两组测试做一下网站速度对比:

上面两张图片是我用浏览器无痕模式第一次打开的测试速度。(上图是我的站,下图是水煮鱼的站)

这上面两张图片是我浏览器无痕模式第二次打开的测试速度。(上图是我的站,下图是水煮鱼的站)

这么一看我的站优化的还不错哈,已经接近大神的标准。(这么比也不太好,大神的网站流量大,而我网站虽然没什么流量,但是配置低、水管子小。凑合着对比下吧)

下面我就来讲讲我是如何做优化的:

一、使用CDN加速网站

我用的阿里云的CDN,使用CDN的好处不仅仅是缓存网站静态资源,还可以起到隐藏源IP的作用,这样还可以应对一些小的流量攻击,避免源IP泄露被人攻击。下图就是我网站CDN的加速效果:

二、动静分离

为什么要做动静分离?其实你可以研究一下其他的网站,比如说新浪、今日头条他们的网站,他们的图片域名跟网站的域名肯定不是同一个,具体为什么,你还是百度一下,总之一个字——好!

咱们wordpress做动静分离,最主要的就是把图片放到专用存储空间,减少网站服务器的压力,另外也建议动静分离的那一部分也做一下CDN加速。让图片等相对较大的资源才CDN节点获取,提高网站打开速度。本站也做了动静分离,用的是阿里云OSS,如下图:

三、服务器优化

对于小白来说,服务器的优化非常难。好在有很多工具可以让我们利用。用云服务器我推荐使用宝塔控制面板,可以帮助小白用户快速上云,宝塔控制面板非常好优化,而且下面要讲的优化操作,都是基于宝塔控制面板上去操作,非常简单。

1、安装Memcached和PHP Memcached扩展,使用 Memcached 来缓存 WordPress 数据。

2、PHP开启 OPCache,用于加速PHP脚本,因为wordpress就是PHP语言开发的。

3、MySQL设置MySQL Query Cache,可以保存保存查询结果,同样的查询不再从数据库检索,对速度有很大的提升。

四、wordpress程序优化

对于wordpress的优化我做了如下几点:

1、安装静态插件,生成html静态页。我推荐使用WP Fastest Cache插件,综合其他缓存插件,它还是很给力的,栏目页、tag页页都可以生产缓存静态页。

2、wordpress开启Memcached缓存,做了服务器的Memcached缓存,还要做Wordpress的,要告诉服务器这个是可以缓存的。

3、使用Cachify插件,可解决wordpress站waiting ttfb时间过长的问题

出现上图的“(from disk cache)”,说明服务器端的缓存已经成功了。

经过以上几步操作,你会发现你的wordpress站已经可以达到秒开了,是不是很简单?

WordPress 启用 Memcached 动态缓存

Memcached 是一个高性能分布式的内存对象缓存系统, 通常被用于降低数据库加载压力以提高动态 web 应用的响应速度。

官网:http://www.memcached.org

实测环境:搬瓦工 CentOS 7 X64 + LNMP(php 7.2)+ WordPress 4.9

安装 Memcached

LNMP 一键包自带 Memcached 安装脚本,折腾起来很方便。进入 lnmp 解压后的目录,执行:

./addons.sh install memcached

可以根据自己需求选择 php-memcache 或 php-memcached 扩展,功能上 php-memcached 更强大一些。我是选择安装 php-memcached。

Starting Memcached...
Starting memcached: done
====== Memcached install completed ======
Memcached installed successfully, enjoy it!

看到上面字样就安装成功了。运行下面命令

php -m | grep memcached

会输出 memcached

测试缓存

<?php
$m = new Memcached();
$m->addServer( '127.0.0.1', 11211 );
$m->set( 'foo', 100 );
echo $m->get( 'foo' ) . "\n";

将上面代码保存为 test.php,然后执行 php -f test.php,输出 100 表示安装成功。

至此,VPS 系统环境已经支持 memcached 缓存。

自动检测 memcached 进程 不存在则重启进程

复制下面代码保存为 memcachedcheck.sh 文件,上传至 root 目录,执行 chmod +x memcachedcheck.sh

#!/bin/sh
#check memcached process and restart if down
DATE=`date -d "today" +"%Y-%m-%d-%H:%M"`
MM=`ps aux |grep "memcached" |grep "11211" |grep -v "grep" |wc -l`
#if语句判断进程是否存在,如果不存在,输出日志记录并重启memcached服务
if [ "$MM" == "0" ];
then
echo "$DATE The memcached is problem and restart" >> /root/memcached_check.logs
service memcached restart
fi

然后添加至 crontab 计划任务,每隔5分钟检测一次。

*/5 * * * * /root/sh/memcachedcheck.sh

WordPress 缓存配置

系统已经支持 memcached,WordPress 也要安装相应支持。

安装 wordpress-pecl-memcached-object-cache 插件,下载地址:https://github.com/tollmanz/wordpress-pecl-memcached-object-cache

下载解压得到 object-cache.php,上传到 wp-content 目录即可开启 memcached 缓存。

注意:若安装的是 memcache,这里需要使用 WordPress 官网上号称 Memcached 的 object-cache.php 插件,并且它只支持 memcache,不支持 Memcached。两者不能混用,否则会出现 WordPress 打不开,前台后台页面一片空白。

检查缓存效果,从官方下载 memcached 探针:http://pecl.php.net/get/memcache-3.0.8.tgz

解压,里面有一个 memcache.php 文件,编辑并找到如下代码:

define('ADMIN_USERNAME','memcache');    // Admin Username
define('ADMIN_PASSWORD','password'); // Admin Password
define('DATE_FORMAT','Y/m/d H:i:s');
define('GRAPH_SIZE',200);
define('MAX_ITEM_DUMP',50);

$MEMCACHE_SERVERS[] = 'mymemcache-server1:11211'; // add more as an array
$MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'; // add more as an array

修改为:

define('ADMIN_USERNAME','memcache');    // Admin 登录名称,自行修改
define('ADMIN_PASSWORD','password'); // Admin 登录密码,自行修改
define('DATE_FORMAT','Y/m/d H:i:s');
define('GRAPH_SIZE',200);
define('MAX_ITEM_DUMP',50);
//下面是定义memcached服务器,一般是单机部署,可注释掉一行,并将服务器地址根据实际修改,一般是127.0.0.1
$MEMCACHE_SERVERS[] = '127.0.0.1:11211'; // add more as an array
//$MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'; // add more as an array

然后将文件上传到网站私密目录,然后通过前台访问 memcache.php,输入上面的用户名和密码即可看到 memcached 状态。

 669-memcached-status

其他设置

如果 memcached 状态页面可以打开,但是里面没有Hits数据,可以刷新多几次 WordPress 博客页面,如果还是没有,说明 WordPress 并没有成功连接到 memcached,这时候可以在 wp-config.php 加入如下参数:

global $memcached_servers;
$memcached_servers = array(
array(
'127.0.0.1', // Memcached服务器IP
11211 // Memcached服务器端口
)
);

memcached 实际监听 IP 和端口,可以通过如下命令查看:

netstat -nutlp | grep memcache