WordPress开发中短代码的实现及相关函数使用技巧


Posted in PHP onJanuary 05, 2016

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

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

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

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

My name's XiangZi !

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

function myName($array,$content) {
var_dump($array);
var_dump($content);
}
 
add_shortcode('xz', 'myName');

编辑文章时我们输入:

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

在函数中我们将得到:

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

shortcode_atts
不是因为搞短代码插件,我也不会用到这个函数,
shortcode_atts 函数主要是用来设置短代码中截获变量的初始值。
这是一个很实用的函数,其实这个函数的真正是作用在数组上得,
因为我们从短代码中截获的参数都是数组形式的。

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

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

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

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

shortcode_atts 函数声明

/**
 * Combine user attributes with known attributes and fill in defaults when needed.
 *
 * The pairs should be considered to be all of the attributes which are
 * supported by the caller and given as a list. The returned attributes will
 * only contain the attributes in the $pairs list.
 *
 * If the $atts list has unsupported attributes, then they will be ignored and
 * removed from the final returned list.
 *
 * @since 2.5
 *
 * @param array $pairs Entire list of supported attributes and their defaults.
 * @param array $atts User defined attributes in shortcode tag.
 * @return array Combined and filtered attribute list.
 */
function shortcode_atts($pairs, $atts) {
 $atts = (array)$atts;
 $out = array();
 foreach($pairs as $name => $default) {
 if ( array_key_exists($name, $atts) )
  $out[$name] = $atts[$name];
 else
  $out[$name] = $default;
 }
 return $out;
}
PHP 相关文章推荐
用cookies来跟踪识别用户
Oct 09 PHP
在PHP中实现Javascript的escape()函数代码
Aug 08 PHP
关于IIS php调用com组件的权限问题
Jan 11 PHP
解析php 版获取重定向后的地址(代码)
Jun 26 PHP
php中如何使对象可以像数组一样进行foreach循环
Aug 09 PHP
php+jQuery.uploadify实现文件上传教程
Dec 26 PHP
php实现汉字验证码和算式验证码的方法
Mar 07 PHP
php 调用ffmpeg获取视频信息的简单实现
Apr 03 PHP
PHP单例模式与工厂模式详解
Aug 29 PHP
PHP PDOStatement::closeCursor讲解
Jan 30 PHP
解决laravel(5.5)访问public报错的问题
Oct 12 PHP
php将xml转化对象的实例详解
Nov 17 PHP
WordPress开发中用于获取近期文章的PHP函数使用解析
Jan 05 #PHP
Yii中表单用法实例详解
Jan 05 #PHP
php实现购物车功能(下)
Jan 05 #PHP
Yii中创建自己的Widget实例
Jan 05 #PHP
php实现购物车功能(上)
Jul 23 #PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
Jan 05 #PHP
PHP使用Pear发送邮件(Windows环境)
Jan 05 #PHP
You might like
杏林同学录(七)
2006/10/09 PHP
php中将一段数据存到一个txt文件中并显示其内容
2014/08/15 PHP
PHP简单获取及判断提交来源的方法
2016/04/22 PHP
[原创]php正则删除html代码中class样式属性的方法
2017/05/24 PHP
javascript 读取xml,写入xml 实现代码
2009/07/10 Javascript
JS拖动技术 关于setCapture使用
2010/12/09 Javascript
jQuery方法简洁实现隔行换色及toggleClass的使用
2013/03/15 Javascript
javascript实现div浮动在网页最顶上并带关闭按钮效果实例
2013/08/13 Javascript
JQuery Tips相关(1)----关于$.Ready()
2014/08/14 Javascript
javascript实现鼠标移到Image上方时显示文字效果的方法
2015/08/07 Javascript
javascript产生随机数方法汇总
2016/01/25 Javascript
JS判断form内所有表单是否为空的简单实例
2016/09/09 Javascript
js生成随机颜色方法代码分享(三种)
2016/12/29 Javascript
angularjs+bootstrap实现自定义分页的实例代码
2017/06/19 Javascript
基于复选框demo(分享)
2017/09/27 Javascript
小程序实现页面顶部选项卡效果
2018/11/06 Javascript
vue项目打包之后背景样式丢失的解决方案
2019/01/17 Javascript
layui异步加载table表中某一列数据的例子
2019/09/16 Javascript
基于纯JS实现多张图片的懒加载Lazy过程解析
2019/10/14 Javascript
如何基于filter实现网站整体变灰功能
2020/04/17 Javascript
[46:43]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第二局
2016/03/02 DOTA
Python标准库与第三方库详解
2014/07/22 Python
python根据开头和结尾字符串获取中间字符串的方法
2015/03/26 Python
Python的爬虫框架scrapy用21行代码写一个爬虫
2017/04/24 Python
python中os和sys模块的区别与常用方法总结
2017/11/14 Python
Ubuntu下Python2与Python3的共存问题
2018/10/31 Python
python修改txt文件中的某一项方法
2018/12/29 Python
python实时监控logstash日志代码
2020/04/27 Python
python随机模块random的22种函数(小结)
2020/05/15 Python
Python的控制结构之For、While、If循环问题
2020/06/30 Python
使用phonegap克隆和删除联系人的实现方法
2017/03/31 HTML / CSS
在C#中如何实现多态
2014/07/02 面试题
GWebs公司笔试题
2012/05/04 面试题
中专毕业生求职简历的自我评价
2013/10/21 职场文书
幼儿教师演讲稿
2014/05/06 职场文书
Python编程中内置的NotImplemented类型的用法
2022/03/23 Python