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学习之PHP运算符
Oct 09 PHP
php生成缩略图的类代码
Oct 02 PHP
php中的Base62类(适用于数值转字符串)
Aug 12 PHP
php把session写入数据库示例
Feb 26 PHP
php function用法如何递归及return和echo区别
Mar 07 PHP
php数组保存文本与文本反编成数组实例
Nov 13 PHP
PHP多线程之内部多线程实例分析
Mar 09 PHP
php实现的任意进制互转类分享
Jul 07 PHP
php计算税后工资的方法
Jul 28 PHP
PHP实现的激活用户注册验证邮箱功能示例
Jun 06 PHP
PHP实现简单的计算器
Aug 28 PHP
laravel与thinkphp之间的区别与优缺点
Mar 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 缓冲的免费实现方法
2006/10/09 PHP
PHP实现根据设备类型自动跳转相应页面的方法
2014/07/24 PHP
Laravel核心解读之异常处理的实践过程
2019/02/24 PHP
JavaScript多线程的实现方法
2007/05/08 Javascript
模仿JQuery.extend函数扩展自己对象的js代码
2009/12/09 Javascript
jQuery表单验证插件formValidator(改进版)
2012/02/03 Javascript
jquery鼠标放上去显示悬浮层即弹出定位的div层
2014/04/25 Javascript
jQuery中:input选择器用法实例
2015/01/03 Javascript
JQuery调用绑定click事件的3种写法
2015/03/28 Javascript
javascript实现消灭星星小游戏简单版
2016/11/15 Javascript
ionic环境配置及问题详解
2017/06/27 Javascript
vue 全选与反选的实现方法(无Bug 新手看过来)
2018/02/09 Javascript
详解微信小程序input标签正则初体验
2018/08/18 Javascript
vue.extend与vue.component的区别和联系
2018/09/19 Javascript
解决Layui当中的导航条动态添加后渲染失败的问题
2019/09/25 Javascript
[03:12]TI9战队档案 - Virtus Pro
2019/08/20 DOTA
详解Python命令行解析工具Argparse
2016/04/20 Python
Python使用PDFMiner解析PDF代码实例
2017/03/27 Python
详解从Django Rest Framework响应中删除空字段
2019/01/11 Python
Python匿名函数及应用示例
2019/04/09 Python
Python使用Pickle模块进行数据保存和读取的讲解
2019/04/09 Python
Python中使用logging和traceback模块记录日志和跟踪异常
2019/04/09 Python
tensorflow 模型权重导出实例
2020/01/24 Python
Python+appium框架原生代码实现App自动化测试详解
2020/03/06 Python
HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)
2017/01/05 HTML / CSS
I.T中国官网:精选时尚设计师单品网购平台
2018/03/26 全球购物
英国排名第一的礼品体验公司:Red Letter Days
2018/08/16 全球购物
几个数据库方面的面试题
2016/07/01 面试题
英语系本科生求职信范文
2013/12/18 职场文书
《最大的麦穗》教学反思
2014/04/17 职场文书
社会实践先进工作者事迹材料
2014/05/06 职场文书
白莲教口号
2014/06/18 职场文书
考试保密承诺书
2014/08/30 职场文书
公务员学习中国梦心得体会
2016/01/05 职场文书
2016干部作风整顿心得体会
2016/01/22 职场文书
90后经典动画片排行:《数码宝贝》第二,《小鲤鱼历险记》在榜
2022/03/18 日漫