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在XP下IIS和Apache2服务器上的安装
Sep 05 PHP
无数据库的详细域名查询程序PHP版(3)
Oct 09 PHP
用PHP+MySql编写聊天室
Oct 09 PHP
php的access操作类
Apr 09 PHP
php 动态多文件上传
Jan 18 PHP
在JavaScript中调用php程序
Mar 09 PHP
PHP生成Flash动画的实现代码
Mar 12 PHP
详解php的魔术方法__get()和__set()使用介绍
Sep 19 PHP
一个简单且很好用的php分页类
Oct 26 PHP
PHP错误Cannot use object of type stdClass as array in错误的解决办法
Jun 12 PHP
php 无限级分类,超级简单的无限级分类,支持输出树状图
Jun 29 PHP
PHP实现的连贯操作、链式操作实例
Jul 08 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
php一次性删除前台checkbox多选内容的方法
2013/09/22 PHP
PHP实现二维数组按照指定的字段进行排序算法示例
2019/04/23 PHP
利用jQuary实现文字浮动提示效果示例代码
2013/12/26 Javascript
文本域光标操作的jQuery扩展分享
2014/03/10 Javascript
JavaScript 作用域链解析
2014/11/13 Javascript
js实现字符串转日期格式的方法
2015/05/20 Javascript
基于jQuery实现搜索关键字自动匹配功能
2020/03/26 Javascript
基于jQuery插件实现点击小图显示大图效果
2016/05/11 Javascript
详解JavaScript节流函数中的Throttle
2016/07/16 Javascript
jQuery简单设置文本框回车事件的方法
2016/08/01 Javascript
Vue.js创建Calendar日历效果
2016/11/03 Javascript
JavaScript结合HTML DOM实现联动菜单
2017/04/05 Javascript
详解Vue组件实现tips的总结
2017/11/01 Javascript
nodejs实现解析xml字符串为对象的方法示例
2018/03/14 NodeJs
JavaScript动态加载重复绑定问题
2018/04/01 Javascript
javaScript实现游戏倒计时功能
2018/11/17 Javascript
[00:32]2018DOTA2亚洲邀请赛Secret出场
2018/04/03 DOTA
Python数据类型学习笔记
2016/01/13 Python
Python 多进程和数据传递的理解
2017/10/09 Python
Python中Proxypool库的安装与配置
2018/10/19 Python
pyqt5 使用cv2 显示图片,摄像头的实例
2019/06/27 Python
python 随机森林算法及其优化详解
2019/07/11 Python
Python Pandas 转换unix时间戳方式
2019/12/07 Python
Python3.7实现验证码登录方式代码实例
2020/02/14 Python
如何打包Python Web项目实现免安装一键启动的方法
2020/05/21 Python
HTML5超炫酷粒子效果的进度条的实现示例
2019/08/23 HTML / CSS
飞利浦比利时官方网站:Philips比利时
2016/08/24 全球购物
Helly Hansen工作服美国官方网上商店:为最恶劣的环境
2019/09/04 全球购物
行政助理岗位职责
2013/11/10 职场文书
项目经理的岗位职责
2013/11/23 职场文书
电大本科自我鉴定
2014/02/05 职场文书
英语专业职业生涯规划范文
2014/03/05 职场文书
2016年情人节问候语
2015/11/11 职场文书
担保书怎么写 ?
2019/04/22 职场文书
nginx 防盗链防爬虫配置详解
2021/03/31 Servers
Go标准容器之Ring的使用说明
2021/05/05 Golang