程序员人生 网站导航

给 WordPress 预留改进的空间

栏目:WordPress时间:2014-05-10 08:37:31

在做我的音乐博客 NoSay.in时我曾经考虑了很多日后进行更新时会遇到的问题,例如:以后我想在首页增加一个快速听歌的功能,因此我在每篇日志里都预先写上了custom field;还有某些对用户体验产生很大影响的插件,以后在更换插件的时候,我如何才能使对用户和我自己的影响降到最低?因此我当时选择了一些使用简便的插件。但昨天我看了wordpress.la的《精通 WordPress简码》后,一个更好的想法诞生了。

什么是Short Code?

WordPress Short Code也叫做短代码或者短码,早在WP2.5里已经加入了这个功能。WP短码在功能上和做主题和插件时经常做的自定义function功能几乎一样,也支持自定义参数。最大的区别是WP短码可以在文章里通过自定义的标记进行调用,具有极高的灵活性。请看摘自wordpress.la的一个例子。

定制Google AdSense位置

问题:许多博主都在使用Google AdSense,在主题文件如sidebar.php 添加AdSense编码非常容易,但有经验的网络营销师都明白访客点击最多的还是嵌入在文章内部的广告。

解决方案:若在日志或页面中嵌入AdSense广告,需创建以下简码:

1. 打开functions.php文件并复制以下代码。记得把JavaScript代码换成自己的AdSense代码。
function showads() {
return ‘

‘;
}
add_shortcode(‘adsense’, ’showads’);
2. 保存functions.php文件后,可使用以下简码在日志和页面定制AdSense显示位置:
[adsense]

注意AdSense代码被adsense div元素包装,这样我们就可以在style.css文件中设计其样式。

代码注释:以上代码用来显示AdSense广告。当把简码插入日志中时,它就会返回AdSense广告。这一切都非常简单,同时也节省了大量时间。


从这个例子可以看到,通过WP短码,我们可以在文章里的任意一个地方快速地插入一段已经定制好的代码。这将大大地提升你的工作效率。

如何预留改进的空间?

首先说说我的看法。我预留改进的空间的原因是我要避免被“插件劫持”。插件劫持是我自己命名的一种情况,意思是你正在使用一个前台插件,例如Hightslide,要正常使用Highslide的功能的话,我就必须在文章里使用符合Hightslide的规则的代码。麻烦就从这里开始。到了后来的某一天,我觉得Magic Toolbox更好,于是乎我转用Magic Toolbox,可是Magic Toolbox和Hightslide的调用代码不兼容,于是我又要重新修改以前写的文章,使旧文章也支持Magic Toolbox。考虑到旧文章的兼容问题,于是我可能嫌麻烦,而被迫继续使用Hightslide。这就是所谓的插件劫持。而WP短码正好可以解决这个问题。以下是我想到的解决插件劫持问题的方法。

在使用Hightslide的时候,我先在主题的function.php里定义一个短码。

function insert_img($atts, $content = null) {
extract(shortcode_atts(array(
"href" => 'http://'
), $atts));
return '<a href="http://blog.imbolo.com/'%3C/span%3E%3Cspan%20style="color:#339933">.$href.' class="highslide" onclick="return hs.expand(this)"><img src="http://blog.imbolo.com/'%3C/span%3E%3Cspan%20style="color:#339933">.$content.'" alt="Highslide JS"/></a>';
}

add_shortcode("img", "insert_img");

这样我就能通过在文章里插入[img href=http://blog.imbolo.com/”big.jpg”]small.jpg&#91/img]这样的代码来插入带有Hightslide效果的图片。当我转用Magic Toolbox后,我只需要把短码修改一下,变成:

function insert_img($atts, $content = null) {
extract(shortcode_atts(array(
"href" => 'http://'
), $atts));
return '<a href="http://blog.imbolo.com/'%3C/span%3E%3Cspan%20style="color:#339933">.$href.'" class="MagicThumb"><img src="http://blog.imbolo.com/'%3C/span%3E%3Cspan%20style="color:#339933">.$content.'" alt=""/></a>';
}

add_shortcode("img", "insert_img");

通过修改一次代码,我所有采用WP短码插入的Highslide效果都将转变成Magic Toolbox的效果。同样的,如果想在Magic Toolbox的基础上再进行改变,我也是只需要修改我定义的WP短码就可以了。

后记
对很多刚开始用WordPress的人来说,大多数人是不会注重以后的升级的(包括我),这也造成很多人在文章多了以后遇到了插件劫持。我希望看过这篇文章的朋友都能重视这个问题,并在以后的日子里尽量避开它。虽然在开始的时候会麻烦点,但能对以后的更新带来很大的方便。

另外提醒一下,用WP短码来进行不同插件的过渡的方法只使用于完全由浏览器实现效果的插件,对需要在后台进行二次处理的插件是无效的,如WP-Syntax。

本文所用的例子不能代表Hightslide和Magic Toolbox在实际使用上的优劣,请大家根据自己的情况自行选用插件。

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐