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 相关文章推荐
一个目录遍历函数
Oct 09 PHP
PHP如何编写易读的代码
Jul 10 PHP
php在window iis的莫名问题的测试方法
May 14 PHP
解析smarty模板中类似for的功能实现
Jun 18 PHP
php循环table实现一行两列显示的方法
Jun 04 PHP
php结合curl实现多线程抓取
Jul 09 PHP
PHP中的随机性 你觉得自己幸运吗?
Jan 22 PHP
php结合web uploader插件实现分片上传文件
May 10 PHP
PHP表单数据写入MySQL数据库的代码
May 31 PHP
PHP PDOStatement::rowCount讲解
Feb 01 PHP
Yii2框架中一些折磨人的坑
Dec 15 PHP
PHP实现创建一个RPC服务操作示例
Feb 23 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
基于mysql的bbs设计(三)
2006/10/09 PHP
PHP 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
2009/01/30 PHP
php下统计用户在线时间的一种尝试
2010/08/26 PHP
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
2014/10/30 PHP
php类中的各种拦截器用法分析
2014/11/03 PHP
PHP设置进度条的方法
2015/07/08 PHP
PHP获取当前系统时间的方法小结
2018/10/03 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
2019/10/11 PHP
JS 自定义函数缺省值的设置方法
2010/05/05 Javascript
jquery实现的让超出显示范围外的导航自动固定屏幕最顶上
2011/09/22 Javascript
extjs3 combobox取value和text案例详解
2013/02/06 Javascript
JS按字节截取字符长度实例
2013/11/20 Javascript
jQuery 1.9使用$.support替代$.browser的使用方法
2014/05/27 Javascript
基于javascript实现的搜索时自动提示功能
2014/12/26 Javascript
angularJS提交表单(form)
2015/02/09 Javascript
zepto.js中tap事件阻止冒泡的实现方法
2015/02/12 Javascript
jQuery内容过滤选择器用法示例
2016/09/09 Javascript
jQuery基于xml格式数据实现模糊查询及分页功能的方法
2016/12/25 Javascript
jQuery实现的简单在线计算器功能
2017/05/11 jQuery
Node.js+Express+MySql实现用户登录注册功能
2017/07/10 Javascript
详解在vue-cli中引用jQuery、bootstrap以及使用sass、less编写css
2017/11/08 jQuery
vue2导航根据路由传值,而改变导航内容的实例
2017/11/10 Javascript
Object.keys() 和 Object.getOwnPropertyNames() 的区别详解
2020/05/21 Javascript
js对象属性名驼峰式转下划线的实例代码
2020/09/17 Javascript
Python中使用中文的方法
2011/02/19 Python
Python获取央视节目单的实现代码
2015/07/25 Python
详解python分布式进程
2018/10/08 Python
TensorFlow MNIST手写数据集的实现方法
2020/02/05 Python
Python使用Socket实现简单聊天程序
2020/02/28 Python
Pytorch 使用不同版本的cuda的方法步骤
2020/04/02 Python
python os模块常用的29种方法使用详解
2020/06/02 Python
欧洲最大的美妆零售网站:Feelunique
2017/01/14 全球购物
日语专业毕业生求职信
2013/12/04 职场文书
购房公证委托书(2014版)
2014/09/12 职场文书
新学期家长寄语2016
2015/12/03 职场文书
意外事故赔偿协议书
2016/03/22 职场文书