看到了博友:DH博客最近发表的一篇博文:wordpress主题:添加文章目录,觉得内容有趣。尤其是最后DH博友说:“呵呵,其实我还有很多想法,下次在和你们说,我想是不是可以直接插入到文字中,不用每次现实的时候过滤。” 这唤起了我对shortcode的记忆,就搭着DH这篇文章的顺风车,写一篇简单的介绍吧,并期待能够和DH博友的思路有一次吻合 :-)
在我印象shortcode是wordpress的一组简单易用的功能,来实现对博文(post)的正文(content)的修改。创建的步骤就是两步:
第一步:在主题(theme)的function.php里面添加一个函数,名字随便。
第二步:继续在主题(theme)的function.php里面,将该函数添加到shortcode中。写法类似于将函数添加到action或者filter中,但因为用不着每次实现的时候过滤,只在读到了引用shortcode的博文时候才发生作用,所以效率较高。

在我的博客主题里面,就是采用shortcode的办法往博文(post)的正文(content)里面添加google的adsense广告代码。并且通过判断是否是首页,来决定是否显示这些广告代码。如果是首页的话,博文里面的广告将不被显示;如果是阅读该博文全文的话,广告将被显示。

现在来看一下我的代码吧,正好作为shortcode创建和引用的例子。

/*第一步:在主题(theme)的function.php里面添加一个函数,我随便起个名:showads*/
//shortcode
function showads($atts) {
 extract(shortcode_atts(array(
  "ad" =>'left'
  ), $atts));
 
 if (is_home())
  return ; //如果是在首页,不显示广告
 
 switch ($ad) {
  //将广告排在左边
  case 'left':
    $strDiv =
    '<div style="margin: 0 5px 5px 5px; float:left;">
    /*google adsense 广告的代码*/
    </div>';
    break;
  //将广告居中排列(因为在这个时候我采用了大幅广告,故使用了 big 作为选项)
  case 'big':
    $strDiv =
    '<div style="width: 336px; margin: 0px auto 12px; border:0px;">
    /*google adsense 广告的代码*/
    </div>';
    break;
  default:
    break;
  }
  return $strDiv;
}
/*第二步:继续在主题(theme)的function.php里面,将该函数添加到shortcode中*/
/*其实就一句话:add_shortcode就行了 */
  add_shortcode('adsense', 'showads');

如此,在shortcode中,就有了一个我们创建的showads函数了。怎么引用呢?
非常简单:请新建或者打开一个post 或者 page,在正文中间,选择你喜欢的地方,写上:

[adsense]或者[adsense ad="big"]

其实 shortcode 在很多插件的使用中有所采用,比如NextGEN Gallery的类似这样的shortcode:

[singlepic id=1234567 w=320 h=240 float=center]

其他很多的shortcode应用,请参考:
Massive List Of Useful WordPress Shortcodes Resources

扩展和联想:

访客的留言(1)

欢迎留言