解决WP-PageNavi插件产生的分页链接无法正确传递Query String的问题

这个问题似乎是最近才爆出来的,一位客户反映某个基于WPML实现的双语的网站上,英语版列表页面的分页不起作用了,点击第二页会跳转到网站首页。检查后发现问题锁定在自定义文章类型的分页上,并且只发生在英语版;网站默认语言中文版则无此问题。这个网站在英语版的URL上加了Query String-“lang=en”,而WP-PageNavi把分页链接变成了这样“http://xxx.com?lang=en/category/greece/page/2”

记得网站刚开发完的时候,当时版本的WPML和WP-PageNavi配合还不错,是没这个问题的,也不知道是其中哪个插件更新后造成了这个兼容问题,已无从追查,看来只能自己动手解决了。我的解决方法比较粗暴,主要是没本事也不愿从插件内部找问题,直接在前端修改这串Query String的位置即可,此JS代码放在调用了wp_pagenavi函数的页面底部,也可以偷懒直接放在footer.php:

1
2
3
4
5
6
7
8
9
$(function(){
	$(".wp-pagenavi a").each(function(){
		tempvelue = $(this).attr("href");
		if( tempvelue.indexOf("?lang=en")>0 ){
			tempvelue = tempvelue.replace("?lang=en","") + "?lang=en";
			$(this).attr("href",tempvelue);
		}
	});
});

这个问题也可能发生在其他带URL带Query String的页面上,修改以上代码都可以解决。所以感觉更可能是WP-PageNavi的问题,希望以后的更新能解决。

如果有哪位高人知道在PHP层的解决方法,还请赐教。

研究一下响应式图片加载属性srcset和sizes

元旦过后又长一岁,然而活到老学到老这个道理是不变的。这几天把手上一部分WordPress网站升级到最新版4.4,就学到新东西了。发现4.4版给所有在文章内容区的图片都加上了两个属性:srcset和sizes。比如:
srcset
这俩个属性的作用是为不同显示尺寸加载不同的图片源,这样就能在图片本身做到“响应式”,而不仅仅是跟随屏幕尺寸了。 查看详细 »

Query Monitor – WordPress项目开发必备插件推荐

如果你正在进行基于WordPress的网站开发,Query Monitor这款插件会对你起到很大的帮助。顾名思义,Query Monitor提供了一系列查询监控,可以在WordPress前台/后台任何一个页面给出当前页的数据库查询次数、耗费时间等详细数据,对优化项目提供一定的参数依据。

安装插件后,以管理员身份登录网站,页面顶部菜单会多出一组数据(如图)
Query Monitor - WordPress项目开发必备插件推荐 查看详细 »

解决Linux的pureFTPd默认在FTP客户端每个目录最多只显示1998个文件的问题

今天在一个图库项目中发现无论在FTP里上传多少个文件,每个文件夹最多只能列出1998个文件,其余的则全部“消失”。上服务器查看还好文件都在,于是猜想应该是FTP设置的问题。Google了一下很快找到解决方法,记录一下。
解决Linux的pureFTPd默认在FTP客户端每个目录最多只显示1998个文件的问题 查看详细 »

WordPress文章分页号码样式加强

如果要给一篇长文章进行分页,我们只要在需要分页的地方加上<!–nextpage–>这样的标签即可。WordPress的文章页面只要有wp_link_pages这个函数,就会在调用函数的地方增加分页符,就像这样:
WordPress文章分页号码样式加强
图中我已对数字链接的样式做了美化,给数字加了灰色边框,但我没有办法对数字1做任何修饰,因为这个当前页码没有任何HTML标签包裹,无法对此修改样式。

这段代码可以解决这个问题: 查看详细 »

阻止移动设备自动识别页面上的电话号码、email地址

这个问题主要发生在iOS的浏览器上,他们有时候会有一些“自作聪明”,自动把页面上的一串数字识别成电话号码,这样用户不小心点击这串数字,就拨号了。所以我们习惯给那些要在手机上访问的响应式页面增加一串meta标签,以阻止移动端浏览器的这些自动行为。

1
2
3
4
<meta name="format-detection" content="telephone=no" />
<meta name="format-detection" content="email=no" />
<meta name="format-detection" content="address=no" />
<meta name="format-detection" content="date=no" />

其实之所以iOS的浏览器会自动识别页面上的数字为电话号码,就是因为它默认的format-detection中有一条telephone=yes。人为把它设置成no就阻止了这个功能。那么在我们需要真的实现点击链接播电话的时候,只要在link上用标准的“tel:”写法就可以了:

1
<a href="tel:8602188888888">+86 021 88888888</a>

查看详细 »

我的云主机使用经验 – 三家云主机服务商(包括阿里云)的对比

从2013年开始,各家主机供应商都推出了云主机服务。什么是云主机?简单来说就是一台你“看不见,摸得着”的主机。“看不见”指如果你跑去机房,你是找不到自己的那台实体主机的。“摸得着”指你可以像登录实体主机一样远程登录你的云主机,并且进行几乎任何实体主机一样的操作。而最最重要的,是云主机的费用一般只有实体主机的10%。而且你完全不用担心云主机的性能问题,和实体主机一样,用程序探针可以看到自己主机的配置,不用担心主机商骗你。

那么问题是,现在网络上的云主机供应商已经多如牛毛,我要怎么选?
各家都会找一些枪手,写一些软文,发一些广告,究竟孰优孰劣,和我一样,你也一定迷惑过。 查看详细 »

IIS服务器无法播放MP4/FLV/3GP等媒体格式的问题

这个问题其实和之前遇到过的IIS服务器上无法识别svg/woff/woff2字体一样,都是IIS没有注册MIME类型导致的。解决方法也一样,先确认文件已经上传并且路径配置正确,然后远程登录主机,打开IIS,找到网站,右键属性,打开“HTTP头”,找到右下角的“MIME类型…”,添加对应的MIME类型即可:

.3gp 3gp video/3gpp
.flv application/octet-stream
.mp4 application/octet-stream

IIS服务器无法播放MP4/FLV/3GP等格式的问题 查看详细 »