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面向对象全攻略 (九)访问类型
Sep 30 PHP
一步一步学习PHP(1) php开发环境配置
Feb 15 PHP
php array的学习笔记
May 16 PHP
PHP优于Node.js的五大理由分享
Sep 15 PHP
浅析ThinkPHP中的pathinfo模式和URL重写
Jan 06 PHP
php curl 获取https请求的2种方法
Apr 27 PHP
php类自动加载器实现方法
Jul 28 PHP
php实现将HTML页面转换成word并且保存的方法
Oct 14 PHP
基于jQueryUI和Corethink实现百度的搜索提示功能
Nov 09 PHP
PHP设计模式之注册树模式分析
Jan 26 PHP
PHP的mysqli_rollback()函数讲解
Jan 23 PHP
PHP设计模式(四)原型模式Prototype实例详解【创建型】
May 02 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使之能同时支持GIF和JPEG
2006/10/09 PHP
浅析php中json_encode()和json_decode()
2014/05/25 PHP
php读取csv文件并输出的方法
2015/03/14 PHP
ThinkPHP 在阿里云上的nginx.config配置实例详解
2017/10/11 PHP
redis+php实现微博(一)注册与登录功能详解
2019/09/23 PHP
JQuery select控件的相关操作实现代码
2012/09/14 Javascript
关于eval 与new Function 到底该选哪个?
2013/04/17 Javascript
wap图片滚动特效无css3元素纯js脚本编写
2014/08/22 Javascript
js中this的用法实例分析
2015/01/10 Javascript
js的flv视频播放器插件使用方法
2015/06/23 Javascript
浅谈jQuery的offset()方法及示例分享
2015/07/17 Javascript
BootStrap modal模态弹窗使用小结
2016/10/26 Javascript
ionic环境配置及问题详解
2017/06/27 Javascript
JS重学系列之聊聊new操作符
2019/03/04 Javascript
Vue Echarts实现可视化世界地图代码实例
2019/05/07 Javascript
eslint 的三大通用规则详解
2019/05/16 Javascript
jquery选择器和属性对象的操作实例分析
2020/01/10 jQuery
node.js使用net模块创建服务器和客户端示例【基于TCP协议】
2020/02/14 Javascript
vue自定义树状结构图的实现方法
2020/10/18 Javascript
解决vue项目axios每次请求session不一致的问题
2020/10/24 Javascript
django 自定义用户user模型的三种方法
2014/11/18 Python
Python smtplib实现发送邮件功能
2018/05/22 Python
python生成器/yield协程/gevent写简单的图片下载器功能示例
2019/10/28 Python
Python线程指南分享
2019/11/19 Python
keras在构建LSTM模型时对变长序列的处理操作
2020/06/29 Python
python将数据插入数据库的代码分享
2020/08/16 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
2020/12/05 Python
纪伊国屋新加坡网上书店:Kinokuniya新加坡
2017/12/29 全球购物
爱心捐款倡议书
2014/04/14 职场文书
组工干部演讲稿
2014/09/02 职场文书
银行会计主管岗位职责
2014/10/01 职场文书
大学生学期个人总结
2015/02/12 职场文书
2015学习委员工作总结范文
2015/04/03 职场文书
花木兰观后感
2015/06/10 职场文书
如何解决springcloud feign 首次调用100%失败的问题
2021/06/23 Java/Android
python小型的音频操作库mp3Play
2022/04/24 Python