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代码
Apr 09 PHP
晋城吧对DiscuzX进行的前端优化要点
Sep 05 PHP
PHP5函数小全(分享)
Jun 06 PHP
PHP实现生成透明背景的PNG缩略图函数分享
Jul 08 PHP
php实现格式化多行文本为Js可用格式
Apr 15 PHP
php+ajax实现无刷新分页
Nov 18 PHP
yii实现使用CUploadedFile上传文件的方法
Dec 28 PHP
php单链表实现代码分享
Jul 04 PHP
yii2控制器Controller Ajax操作示例
Jul 23 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
Oct 17 PHP
php导出csv文件,可导出前导0实例代码
Nov 16 PHP
Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
Jan 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
php下将图片以二进制存入mysql数据库中并显示的实现代码
2010/05/27 PHP
php截取字符串并保留完整xml标签的函数代码
2013/02/06 PHP
php+html5使用FormData对象提交表单及上传图片的方法
2015/02/11 PHP
PHP Opcache安装和配置方法介绍
2015/05/28 PHP
JavaScript高级程序设计阅读笔记(六) ECMAScript中的运算符(二)
2012/02/27 Javascript
不同的jQuery API来处理不同的浏览器事件
2012/12/09 Javascript
捕获键盘事件(且兼容各浏览器)
2013/07/03 Javascript
jQuery关于导航条背景切换效果实现示例
2013/09/04 Javascript
页面图片浮动左右滑动效果的简单实现案例
2014/02/10 Javascript
JS获取地址栏参数的几种方法小结
2014/02/28 Javascript
$.each与$().each的区别示例介绍
2014/03/20 Javascript
jquery中$(#form :input)与$(#form input)的区别
2014/08/18 Javascript
jQuery+Ajax实现无刷新操作
2016/01/04 Javascript
学习Angularjs分页指令
2016/07/01 Javascript
JQuery实现DIV其他动画效果的简单实例
2016/09/18 Javascript
解析jquery easyui tree异步加载子节点问题
2017/03/08 Javascript
Vue中fragment.js使用方法详解
2017/03/09 Javascript
JavaScript函数Call、Apply原理实例解析
2020/02/17 Javascript
js实现数字跳动到指定数字
2020/08/25 Javascript
[01:32:10]NAVI vs VG Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
Web服务器框架 Tornado简介
2014/07/16 Python
python实现的文件同步服务器实例
2015/06/02 Python
解决PyCharm中光标变粗的问题
2017/08/05 Python
python自动化测试之DDT数据驱动的实现代码
2019/07/23 Python
使用TensorFlow-Slim进行图像分类的实现
2019/12/31 Python
用python制作个音乐下载器
2021/01/30 Python
使用CSS3和Checkbox实现JQuery的一些效果
2015/08/03 HTML / CSS
canvas绘制圆角头像的实现方法
2019/01/17 HTML / CSS
Dyson加拿大官方网站:购买戴森吸尘器,风扇,冷热器及配件
2016/10/26 全球购物
审核会计岗位职责
2013/11/08 职场文书
受欢迎的大学生自我评价
2013/12/05 职场文书
护校行动方案
2014/05/31 职场文书
医院合作协议书
2014/08/19 职场文书
学生偷窃检讨书
2014/09/25 职场文书
学术会议通知
2015/04/15 职场文书
污染环境建议书
2015/09/14 职场文书