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下打开URL地址的几种方法小结
May 16 PHP
php 归并排序 数组交集
May 10 PHP
php中通过虚代理实现延迟加载的实现代码
Jun 10 PHP
php实现自动获取生成文章主题关键词功能的深入分析
Jun 03 PHP
编写安全 PHP应用程序的七个习惯深入分析
Jun 08 PHP
php多文件上传下载示例分享
Feb 20 PHP
PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能
Apr 27 PHP
php实现paypal 授权登录
May 28 PHP
PHP多进程编程总结(推荐)
Jul 18 PHP
php实现的http请求封装示例
Nov 08 PHP
php常用字符函数实例小结
Dec 29 PHP
PHP-FPM的配置与优化讲解
Mar 15 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将session信息存储到数据库的类实例
2015/03/04 PHP
解决laravel(5.5)访问public报错的问题
2019/10/12 PHP
IE innerHTML,outerHTML所引起的问题
2009/06/04 Javascript
去掉gridPanel表头全选框的小例子
2013/07/18 Javascript
nodejs中使用monk访问mongodb
2014/07/06 NodeJs
jquery获取及设置outerhtml的方法
2015/03/09 Javascript
60行js代码实现俄罗斯方块
2015/03/31 Javascript
Js与Jq 获取页面元素值的方法和差异对比
2015/04/30 Javascript
百度地图api如何使用
2015/08/03 Javascript
jQuery Validation PlugIn的使用方法详解
2015/12/18 Javascript
KnockoutJS 3.X API 第四章之数据控制流component绑定
2016/10/10 Javascript
js仿手机页面文件下拉刷新效果
2016/10/14 Javascript
详解JS去重及字符串奇数位小写转大写
2016/12/29 Javascript
利用Query+bootstrap和js两种方式实现日期选择器
2017/01/10 Javascript
bootstrapvalidator之API学习教程
2017/06/29 Javascript
Mint-UI时间组件起始时间问题及时间插件使用
2018/08/20 Javascript
基于Vue实现图片在指定区域内移动的思路详解
2018/11/11 Javascript
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:EE凭借法力虚空拿下4杀
2017/03/30 DOTA
python 切片和range()用法说明
2013/03/24 Python
python实现根据用户输入从电影网站获取影片信息的方法
2015/04/07 Python
Python中int()函数的用法浅析
2017/10/17 Python
Python面向对象程序设计之继承与多继承用法分析
2018/07/13 Python
Python之时间和日期使用小结
2019/02/14 Python
django多对多表的创建,级联删除及手动创建第三张表
2019/07/25 Python
一款纯css3实现的tab选项卡的实列教程
2014/12/11 HTML / CSS
CSS3实现swap交换动画
2016/01/19 HTML / CSS
李维斯德国官方网上商店:Levi’s德国
2016/09/10 全球购物
英国最大的香水商店:The Fragrance Shop
2018/07/06 全球购物
员工自我鉴定范文
2013/10/06 职场文书
教师校本培训方案
2014/02/26 职场文书
代理人委托书
2014/08/01 职场文书
2014班子“三严三实”对照检查材料思想汇报
2014/09/18 职场文书
导游词之上海杜莎夫人蜡像馆
2019/11/22 职场文书
解决hive中导入text文件遇到的坑
2021/04/07 Python
canvas多重阴影发光效果实现
2021/04/20 Javascript
CentOS7安装MySQL8的超级详细教程(无坑!)
2022/06/10 Servers