http://cn.yflying.com/2010/07/wordpress%E4%B8%AD%E7%9A%84%E7%AE%80%E7%A0%81%E6%9C%BA%E5%88%B6/
简码API(应用程序接口)是WordPress >=2.5的新功能。简码API是一个简单的函数集,这些函数创建宏代码以供在文章内容中使用。
简码示例
下面示例中的每一行都是一个简码,分别展示了简码的各种不同的形式。
1
2
3
4
5
6
[mycode]
[mycode foo="bar" id="123" color="red" something="data"]
[mycode]Some Content[/mycode]
[mycode]<p><a href="http://example.com/">HTML Content</a></p>[/mycode]
[mycode]Content [another-shotcode] more content[/mycode]
[mycode foo="bar" id="123"]Some Content[/mycode]
简码API/函数
以下简码API函数可用:
add_shortcode($tag, $func),注册新的简码。$tag是用户所编写的简码字符串(无括号),如”my-shortcode”。$func是处理函数的函数名称。在一个已知简码中只能存在一个处理函数。用$tag名称再次调用add_shortcode()会改写原有处理函数。
remove_shortcode($tag),注销该简码。$tag是用在add_shortcode()中的简码名称。
remove_all_shortcodes(),注销所有的简码。
shortcode_atts($pairs, $atts),对简码的属性进行解析,$pairs指定了一组关键字和默认值,$atts是需要进行解析的参数。 结果包括$pairs中每个关键字,并混合了$atts的返回值。任何存在于$atts但不存在于$pairs的关键字都将被忽略。
do_shortcode($content),解析 $content字符串中所有已知简码宏。返回含有原始内容的字符串,并用处理函数的输出结果代替简码宏。do_shortcode()是’the_content’上一个优先级为11的默认过滤器:add_filter(‘the_content’, ‘do_shortcode’, 11); // From shortcodes.php。
简码API对所有简码进行解析,避免为每个简码编写自定义的正则表达式。并且如果存在属性和内容,简码还会将这些属性和内容逐一进行解析, 最后将这些属性和内容传递给相应的简码处理函数。简码处理器返回的字符串被插入文章正文,取代简码。
API同时支持封闭简码和自闭(自动封闭)简码,其他功能还包括:
解析器支持xhtml样式的封闭简码,如”[my-shortcode /]“等,该功能可选。
简码宏可能为属性值使用单个或双个引用,若属性值中没有空格,可以完全不使用引用。 [my-shortcode foo='123' bar=456] 等于 [my-shortcode foo="123" bar="456"]。
考虑到原有简码的兼容性,属性名称会被忽略。若某属性没有名称,系统会将$atts数组中的一个位置数值型关键字作为属性名称。例如,[my-shortcode 123]会生成$atts = array( 0 => 123 )。位置属性与有名称的属性可能混杂在一起,若属性值中含有空格或其它明显字符,可以使用引用。
简码API有测试实例。测试中包括错误情况示例和异常语句,可在此试用测试实例。
动手编写简码
实现一个简码主要包括两个部分:a)实现简码处理函数;b)将简码添加到记录。如下:
1
2
3
4
5
6
7
8
9
function my_shortcode_handler( $atts, $content = null ) {
extract( shortcode_atts( array(
'attr_1' => 'attribute 1 default',
'attr_2' => 'attribute 2 default',
// ...etc
), $atts ) );
return "<h2>Attributes</h2>" . print_r($attr, true) . "<h2>content</h2>" . $content;
}
add_shortcode('my-shortcode', 'my_shortcode_handler');
这样在显示the_content时,会触发”the_content”钩子上的filter,相应此简码处理函数也会被调用。
属性
原始$atts数组中可能包含用户所指定的任意自由属性。API中的shortcode_atts()函数可为丢失属性设置默认值,并消除简码不可识别的属性。shortcode_atts()函数类似于wp_parse_args()函数,但与wp_parse_args()仍有一些主要差异。shortcode_atts()函数的参数为:
1
shortcode_atts( $defaults_array, $atts );
两个参数都是必需的。 $defaults_array 是一个关联数组,它规定了所识别出属性的名称和默认值。$atts是传递到简码处理器时的原始属性。 shortcode_atts()将返回一个正规的、包括 $defaults_array中所有关键字的数组, 若$atts数组存在, $atts返回的值将被填入$defaults_array。例如:
1
2
3
4
$a = shortcode_atts( array(
'title' => 'My Title'
'foo' => 123,
), $atts );
如果$atts 中要包括数组( ‘foo’ => 456, ‘bar’ => ‘something’ ), 原有结果$a将会变为数组( ‘title’ => ‘My Title’, ‘foo’ => 456 )。$atts['foo']的值改写了默认值123。由于未设置$atts['title'],’My Title’ 将被作为默认值。默认数组中没有“bar”选项,因此返回的结果中也没有这个选项。
将属性名称传递到处理函数前,需要将名称转换为小写字母。属性值无需改变。 [my-shortcode FOO="BAR"]将会生成$atts = array( ‘foo’ => ‘BAR’ )。属性结果将存储(使用extract())在以属性关键字 $attr_1, $attr_2命名的本地变量中。 换言之, 默认值数组近似于本地变量声明列表。(在此情况下可安全使用extract()处理各种冲突而无须特别标识,这是因为shortcode_atts()将清除默认数组外所有关键字。)
输出
简码处理函数的返回值将被插入文章内容,代替原有简码宏的位置。
应用 wpautop与wptexturize 文章格式后,简码会被解析。这就意味着,简码HTML输出不能自动使用引用,也不能自动添加p标签以及br标签。如果用户希望预先设定简码输出格式,可以在从简码处理器返回输出结果时直接调用wpautop() 或 wptexturize()。
wpautop辨别简码语句并试图不包装独立成行的p标签以及br标签。若以这种方式使用简码,应确保用相应的block标签包装输出结果。
嵌套处理
简码API默认是不会处理嵌套简码,处于内层的简码会被当作外层简码的普通内容来处理。但是,如果你想是自己的简码支持嵌套,可以通过递归调用do_shortcode()实现,示例如下:
1
2
3
4
5
6
7
8
9
function my_shortcode_handler( $atts, $content = null ) {
extract( shortcode_atts( array(
'attr_1' => 'attribute 1 default',
'attr_2' => 'attribute 2 default',
// ...etc
), $atts ) );
return "<h2>Attributes</h2>" . print_r($attr, true) . "<h2>content</h2>" . do_shortcode($content);
}
add_shortcode('my-shortcode', 'my_shortcode_handler');
局限
当简码处理函数递归调用do_shortcode()时,简码解析器才可正确处理嵌套简码宏:
1
2
3
4
5
[tag-a]
[tab-b]
[tag-c]
[/tag-b]
[/tag-a]
递归调用的同时,如果使用简码宏来关闭另一个宏,解析器将不能成功解析:
1
2
3
4
[tag-a]
[tag-a]
[/tag-a]
[/tag-a]
这就是do_shortcode()所使用的上下文无关的正则表达式解析器的局限性——运行速度快,但不能计算嵌套级别,因此解析器不能正确匹配所有开放标签与相应的关闭标签。
分享到:
相关推荐
简码是WordPress中非常有用的功能,它允许开发者创建可重用的代码片段,并在需要的时候轻松地在网页内容中插入。 ### 简码的基本概念 简码本质上是一组预先定义的标记,用来生成相应的HTML代码。简码格式是用中...
在.NET框架中,C#语言提供了丰富的功能来处理中文字符,包括中文拼音和中文简码的转换。本文将深入探讨这些知识点,以便开发者能够更好地在C#项目中处理中文字符。 首先,我们要理解中文拼音是将汉字转换为其对应的...
稳定版1.0 需要PHP 7.0或更高版本需要WordPress 4.5或更高版本经过WordPress测试5.7.1 贡献者jsmoriss 执照 标签/关键词简码,页面,列表页面,同级页面,子页面,子页面描述[list-pages],[sibling-pages]和[child-...
在IT领域,拼音简码是一种高效的文字输入技术,特别是在中文输入法中,它极大地提高了打字速度和效率。拼音简码通常基于汉字的拼音来创建,通过缩短完整的拼音字符串,用户只需要输入少量字母就能快速匹配到想要输入...
在Delphi中实现汉字转拼音简码的功能,可以方便地帮助我们处理与汉字拼音相关的任务。 首先,要理解拼音简码的概念。拼音简码是基于汉字拼音首字母的一种简化表示方式,通常用于快速输入汉字,比如在早期的中文...
在实际应用中,地区简码的使用非常广泛,例如在邮政编码、车牌号码、统计报表、数据库设计、地理信息系统(GIS)等领域。通过地区简码,我们可以快速定位到具体的地理位置,方便计算机进行处理。这种编码方式通常...
一个WordPress插件,可以使您通过简单的简码在wordpress上显示您的存储库。 模块化结构 按需扩展 开源代码。 显示代码管理的存储库:GitHub,Gitee。 如何使用 将简码添加到要显示的任何位置: [show-repo src="{{...
在 SQL 中实现获取汉字拼音简码 在 SQL 中实现获取汉字拼音简码是指在 SQL 服务器中使用 SQL 语言实现获取汉字拼音简码的方法。该方法可以减少汉字录入量,提高操作速度,并增强软件的易用性。 1. 排序规则 在 ...
在`TForm1.Edit1Change`过程中,程序遍历输入框中的每一个汉字,并调用`getPY`函数将其转换为拼音简码,最后将结果展示在另一个文本框中。这样,用户可以在输入汉字的同时看到对应的拼音简码,极大地提高了效率。 #...
拼音简码是基于汉字的汉语拼音的一种简化表示方式,常见于各种中文输入法中。例如,汉字“中国”对应的拼音全拼是“Zhongguo”,而简码可能是“zg”。这种简码系统大大提高了汉字输入的效率,减少了用户的键入次数。...
【五笔二级简码】是五笔字型输入法中的一种高效编码技巧,旨在提高打字速度和效率。五笔字型是一种基于汉字结构的形码输入法,将汉字拆分成不同的部分,每个部分对应一个或多个字母键,通过组合这些字母来输入汉字。...
由于题目中的“部分内容”并非实际的五笔简码列表,这里我们将根据五笔输入法的基本原理,结合常见的一、二、三、四级简码特点进行详细说明。 ##### 1. 一级简码 一级简码通常包含了一些非常常见的汉字,如:“一...
在VB编程中,获取汉字的拼音简码是一项实用的技术,特别是在需要进行汉字检索或数据录入优化的场景下。汉字拼音简码通常是根据汉字的机内码来生成的,这是一种节省存储空间并提高检索效率的方法。以下我们将详细讲解...
在Delphi编程环境中,汉字简码通常指的是GBK编码或Unicode编码下的汉字对应的二进制码或者十六进制表示。这个例子可能是一个简单的程序,用于演示如何在Delphi中获取和处理汉字的简码。对于初学者来说,了解这部分...
各位撸友,此文档为全国银行机构对应的英文银行简码表,全部银行有405家简码,如工商银行,则为ICBC,谢谢观赏
这种机制有助于确保每个简码的独特性,防止在大规模使用中出现冲突。例如,在数据库设计中,这样的自动增加编码常用于主键字段,以确保每条记录都有一个独特的标识。 "控件"在这里可能指的是用户界面(UI)组件,如...
4. **结果拼接**:对于输入字符串中的每个汉字,提取到的拼音首字母被拼接到`v_Spell`变量中,最终形成完整的拼音简码字符串。 5. **返回结果**:函数最后返回`v_Spell`变量的值,即为输入汉字字符串的拼音简码。 ...