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 相关文章推荐
php 设计模式之 工厂模式
Dec 19 PHP
php 取得瑞年与平年的天数的代码
Aug 10 PHP
php的ajax框架xajax入门与试用介绍
Dec 19 PHP
php数组函数序列之rsort() - 对数组的元素值进行降序排序
Nov 02 PHP
利用php递归实现无限分类 格式化数组的详解
Jun 08 PHP
PHP图像处理之使用imagecolorallocate()函数设置颜色例子
Nov 19 PHP
php下Memcached入门实例解析
Jan 05 PHP
PHP 设计模式系列之 specification规格模式
Jan 10 PHP
ThinkPHP删除栏目(实现批量删除栏目)
Jun 21 PHP
Laravel中错误与异常处理的用法示例
Sep 16 PHP
TP5框架实现一次选择多张图片并预览的方法示例
Apr 04 PHP
PHP 判断字符串是中文还是英文, 或者是中英混合
Mar 09 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
爱恋千雪-US-AscII加密解密工具(网页加密)下载
2007/06/06 Javascript
JS拖动技术 关于setCapture使用
2010/12/09 Javascript
jquery blockUI 遮罩不能消失与不能提交的解决方法
2011/09/17 Javascript
jquery focus(fn),blur(fn)方法实例代码
2011/12/16 Javascript
jquery实现的鼠标下拉滚动置顶效果
2014/07/24 Javascript
JQuery Tips相关(1)----关于$.Ready()
2014/08/14 Javascript
js分页工具实例
2015/01/28 Javascript
EasyUI的doCellTip实现鼠标放到单元格上提示单元格内容
2016/08/24 Javascript
JQuery和HTML5 Canvas实现弹幕效果
2017/01/04 Javascript
JavaScript中String对象的方法介绍
2017/01/04 Javascript
React学习笔记之事件处理(二)
2017/07/02 Javascript
JS中Attr的用法详解
2017/10/09 Javascript
详解如何使用PM2将Node.js的集群变得更加容易
2017/11/15 Javascript
Vue源码解析之数据响应系统的使用
2019/04/24 Javascript
layui字体图标 loading图标静止不旋转的解决方法
2019/09/23 Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
2020/07/21 Javascript
[01:00:14]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第二场 2月28日
2021/03/11 DOTA
详解Python中的日志模块logging
2015/06/19 Python
Python使用dis模块把Python反编译为字节码的用法详解
2016/06/14 Python
python直接访问私有属性的简单方法
2016/07/25 Python
django 常用orm操作详解
2017/09/13 Python
PyQt5实现下载进度条效果
2018/04/19 Python
python五子棋游戏的设计与实现
2019/06/18 Python
python使用sessions模拟登录淘宝的方式
2019/08/16 Python
python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法
2019/10/04 Python
python实现遍历文件夹图片并重命名
2020/03/23 Python
css3和jquery实现的可折叠导航菜单适合放在手机网页的导航菜单
2014/09/02 HTML / CSS
NYX Professional Makeup官方网站:专业彩妆和美容产品
2019/10/29 全球购物
打架检讨书100字
2014/01/19 职场文书
美术毕业生求职信
2014/02/25 职场文书
说明书怎么写
2014/05/06 职场文书
竞争上岗演讲稿范文
2014/05/12 职场文书
2015年采购员工作总结
2015/04/27 职场文书
党员承诺书范文2015
2015/04/27 职场文书
Python使用Kubernetes API访问集群
2021/05/30 Python
Element-ui Layout布局(Row和Col组件)的实现
2021/12/06 Vue.js