码库记事本

码库记事本

WordPress开发中短代码的实现及相关功能的技巧

小诸哥 0

文章主要介绍了WordPress开发中短代码实现及相关函数使用技巧,文中讲到了add_shortcode函数和shortcode_atts函数的用法,需要的朋友可以参考下。

其实实现短代码很简单,我们只需要用到 WordPress 里面的一个函数就可以搞定短代码,外加自己的一个小函数,可以让短代码实现的轻松加愉快。

短代码实现原理

就像往 WP 一些动作里加钩子和过滤函数一样,短代码只是经过封装了的针对文章输出内容的过滤器而已,没有像有一些主题功能说的那么震撼、那么高深。

下面来一个简单例子:

  1. function myName() {//短代码要处理的函数 
  2. return "My name's XiangZi !"
  3. //挂载短代码 
  4. //xz为短代码名称  
  5. //即你在编辑文章时输入[xz]就会执行 myName 函数 
  6. add_shortcode('xz''myName'); 

那么我们在文章中输入[xz]就会得到

My name's XiangZi !

短代码传参

更高深一点的利用,我将会在后面的文章中讲到,今天只讲一下,短代码的传参机制

高级一点的例子

  1. function myName($array,$content) { 
  2. var_dump($array); 
  3. var_dump($content); 
  4.    
  5. add_shortcode('xz''myName'); 

编辑文章时我们输入:

[xz a="1" b="2" c="3"]这里是三个参数哦[/xz]

在函数中我们将得到:

  1. //$array 是一个数组, 
  2. //大体结构如下 
  3. $array = array('a'=>'1','b'=>'2','c'=>'3'); 
  4. //$content 是一个字符串 
  5. $content = '这里是三个参数哦'
  6. shortcode_atts 

不是因为搞短代码插件,我也不会用到这个函数,shortcode_atts 函数主要是用来设置短代码中截获变量的初始值。

这是一个很实用的函数,其实这个函数的真正是作用在数组上得,因为我们从短代码中截获的参数都是数组形式的。

shortcode_atts 函数详解

不要被函数名所疑惑,在 WordPress 里主要是用于设置短代码参数的默认值,如果我们将代码提取出来,用在别的地方,该函数可以帮我们设置一个既得数组的默认值。

shortcode_atts 函数使用

这个函数使用起来很简单。

  1. shortcode_atts(array
  2. "url" => 'http://PangBu.Com' 
  3. ), $url

以上代码的意思是,将 $url 数组 键值为url的成员默认值设定为'http://PangBu.Com',别的地方用处似乎不多,但对于一些超级懒人,有时候揽到总是忘记或是懒得设定数组的数值时,这个函数超好用。

shortcode_atts 函数声明

  1. /** 
  2.  * Combine user attributes with known attributes and fill in defaults when needed. 
  3.  * 
  4.  * The pairs should be considered to be all of the attributes which are 
  5.  * supported by the caller and given as a list. The returned attributes will 
  6.  * only contain the attributes in the $pairs list. 
  7.  * 
  8.  * If the $atts list has unsupported attributes, then they will be ignored and 
  9.  * removed from the final returned list. 
  10.  * 
  11.  * @since 2.5 
  12.  * 
  13.  * @param array $pairs Entire list of supported attributes and their defaults. 
  14.  * @param array $atts User defined attributes in shortcode tag. 
  15.  * @return array Combined and filtered attribute list. 
  16.  */ 
  17. function shortcode_atts($pairs$atts) { 
  18.  $atts = (array)$atts
  19.  $out = array(); 
  20.  foreach($pairs as $name => $default) { 
  21.  if ( array_key_exists($name$atts) ) 
  22.   $out[$name] = $atts[$name]; 
  23.  else 
  24.   $out[$name] = $default
  25.  } 
  26.  return $out
  27. }

标签: 开发 代码 实现