WordPress中的shortcode短代码功能使用详解
WordPress从2.5的版本开始,增加了一个shortcode(短代码)API,类似于BBS上的BBCode,shortcode也可以很方便的为文章或页面增加功能,并且shortcode的比起BBCode更加灵活和强大。下面Kayo为大家介绍一下shortcode。
一.shortcode简介
shortcode可以让开发者通过以函数的形式创建宏内容来生成内容,或许这个概念看上去有点模糊,但实际上它是一个很简单而实用的功能,只要会编写基本的PHP函数,即可使用shortcode,下文会以实际的例子来说明shortcode的使用方法。
二.shortcode形式
shortcode支持封闭标签和自闭(自动封闭)标签,并且支持在标签内使用参数,至于shortcode具体是何种形式,这就决定于开发者怎样编写这个shortcode了。
[myshortcode]SomeContent[/myshortcode]//封闭标签 [myshortcode]//自闭标签 [myshortcodetitle="example"]//带有一个参数的自闭标签 [myshortcode]<p><ahref="#"><span>内容</span></a></p>[/myshortcode]//标签内可以填写文本或HTML [myshortcode]Content[myshortcodesecond]morecontent[/myshortcodesecond]//也可以嵌套使用标签
三.shortcode例子
在使用shortcode前,首先必须在主题的functions.php文件中定义shortcode,例如:
functionmyshortcode_function($atts,$content=null){//$atts代表了shortcode的各个参数,$content为标签内的内容 extract(shortcode_atts(array(//使用extract函数解析标签内的参数 "title"=>'标题'//给参数赋默认值,下面直接调用$加上参数名输出参数值 ),$atts)); //返回内容 return'<divclass="myshortcode"> <h3>'.$title.'</h3> <p> '.$content.' </p> </div>'; } add_shortcode("msc","myshortcode_function");//注册该shortcode,以后使用[msc]标签调用该shortcode
把上面的代码添加到functions.php中,一个简单的shortcode便创建好了,我们可以通过[msc][/msc]标签调用该shortcode,如:
[msctitle="欢迎"]这是独立博客Kayo'sMelody,欢迎来到本博客[/msc]
在文章或页面内容中输入上面的调用,可以在相应的位置输出一段欢迎语句,在style.css中定义相应的CSS,即可为短代码赋予样式。
Kayo简略的介绍了WordPress的短代码(shortcode)功能,主要是介绍了shortcode的主要概念和使用方法。在本文中,Kayo将会更加详细的介绍一下shortcode中较为重要的API,希望有助于各位开发较为复杂的shortcode。
四.函数add_shortcode
该函数用于注册一个shortcode,它有两个参数:短代码名与shortcode处理函数名,引用上文的例子:
functionmyshortcode_function($atts,$content=null){//$atts代表了shortcode的各个参数,$content为标签内的内容 extract(shortcode_atts(array(//使用extract函数解析标签内的参数 "title"=>'标题'//给参数赋默认值,下面直接调用$加上参数名输出参数值 ),$atts)); //返回内容 return'<divclass="myshortcode"> <h3>'.$title.'</h3> <p> '.$content.' </p> </div>'; } add_shortcode("msc","myshortcode_function");//注册该shortcode,以后使用[msc]标签调用该shortcode
msc即为短代码名,以后在写文章或页面时可以直接使用[msc][/msc]标签调用该短代码,而"myshortcode_function"即为例子中的短代码处理函数的名称。下面重点分析短代码处理函数。
五.短代码处理函数
shortcode处理函数是一个shortcode的核心,shortcode处理函数类似于Flickr(WordPress过滤器),它们都接受特定参数,并返回一定的结果。shortcode处理器接受两个参数,$attr和$content,$attr代表shortcode的各个属性参数,从本质上来说是一个关联数组,而$content代表shortcode标签中的内容。
如上面的例子,若在文章内作出调用,输出一段欢迎语句:
[msctitle="欢迎"]这是独立博客Kayo'sMelody,欢迎来到本博客[/msc]
当文章显示时,WordPress会注册所有的shortcode,如上面的[msc],若shortcode中有属性参数和内容,WordPress会把它们分离出来并解析,然后传递给该shortcode的短代码处理函数,处理后以处理函数输出的结果代替短代码原本的内容显示在文章内。
这时属性参数会并解析会关联数组并传递给$attr,如上面的例子中$attr的值为如下的一个关联数组:
array('title'=>'欢迎')
在输出结果时,可以直接使用$参数名的形式进行输出,如例子中的情况即以$title输出该属性值。
六.shortcode_atts
shortcode_atts是一个很实用的函数,它可以为你需要的属性参数设置默认值,并且删除一些不需要的参数。
shortcode_atts()包含两个参数$defaults_array与$atts,$attr即为属性参数集合,$defaults_array是代表需要设置的属性默认值,举个例子:
$result=shortcode_atts(array( 'title'=>'新标题', 'description'=>'描述内容' ),$atts); $attr依然为 array('title'=>'欢迎')
这时$result的结果为
array('title'=>'新标题','description'=>'描述标题')
'title'由于在$defaults_array有不同的值,因此以这个新的值为准更新了'title',同时也增加了'description'这个值。值得注意的是,shortcode_atts()会过滤$defaults_array中没有的属性,假如$attr中还有一个'ohter'的属性,那么$result的结果仍然是上面的结果,因为$defaults_array中并没有'other'这个属性。当然,这里说的值只是属性的默认值,真正输出的值还是shortcode调用时填写的值。
七.进一步解析属性与设置属性默认值
extract()函数用于进一步解析属性并设置属性默认值,其中一个功能是把各属性参数值赋予给一个形如"$参数名"的变量保存起来(如例子中的$title),方便调用,使用该函数配合shortcode_atts()就可以很安全的输出结果。这点的具体使用可以参见本文第一点“一.函数add_shortcode”的例子。
另外,属性名中的大写字母在传递给处理函数前会先转化为小写字母,因此建议在编写属性名时直接使用小写字母。