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类
Nov 25 PHP
用PHP生成html分页列表的代码
Mar 18 PHP
PHP中数组合并的两种方法及区别介绍
Sep 14 PHP
php中删除字符串中最先出现某个字符的实现代码
Feb 03 PHP
php操作redis中的hash和zset类型数据的方法和代码例子
Jul 05 PHP
Smarty变量调节器失效的解决办法
Aug 20 PHP
详解php设置session(过期、失效、有效期)
Nov 12 PHP
Smarty日期时间操作方法示例
Nov 15 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
Dec 12 PHP
详解Yii2 定制表单输入字段的标签和样式
Jan 04 PHP
php利用imagemagick实现复古老照片效果实例
Feb 16 PHP
小程序微信支付功能配置方法示例详解【基于thinkPHP】
May 05 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面向对象的用户登录身份验证
2017/06/08 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
2018/05/11 PHP
DHTML 中的绝对定位
2006/11/26 Javascript
jQuery EasyUI API 中文文档 DateTimeBox日期时间框
2011/10/16 Javascript
使用documentElement正确取得当前可见区域的大小
2014/07/25 Javascript
js实现的简单图片浮动效果完整实例
2016/05/10 Javascript
js判断某个字符出现的次数的简单实例
2016/06/03 Javascript
详解angularjs结合pagination插件实现分页功能
2017/02/10 Javascript
js 去掉字符串前后空格实现代码集合
2017/03/25 Javascript
js评分组件使用详解
2017/06/06 Javascript
使用Dropzone.js上传的示例代码
2017/10/10 Javascript
vue2.0 自定义组件的方法(vue组件的封装)
2018/06/05 Javascript
使用webpack搭建vue项目及注意事项
2019/06/10 Javascript
Python交换变量
2008/09/06 Python
python实现从字典中删除元素的方法
2015/05/04 Python
Python 使用os.remove删除文件夹时报错的解决方法
2017/01/13 Python
Python正确重载运算符的方法示例详解
2017/08/27 Python
Python3.5 Pandas模块之Series用法实例分析
2019/04/23 Python
Python将主机名转换为IP地址的方法
2019/08/14 Python
tensorflow 查看梯度方式
2020/02/04 Python
Tensorflow之梯度裁剪的实现示例
2020/03/08 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
2020/03/08 Python
Python数据正态性检验实现过程
2020/04/18 Python
记一次django内存异常排查及解决方法
2020/08/07 Python
HTML5 常见面试题之PC端和移动端区别介绍
2018/01/22 HTML / CSS
基于Html5实现的语音搜索功能
2019/05/13 HTML / CSS
Qoo10台湾站:亚洲领先的在线市场
2018/05/15 全球购物
下列程序在32位linux或unix中的结果是什么
2014/03/25 面试题
写给妈妈的道歉信
2014/01/11 职场文书
婚礼新郎父母答谢词
2014/01/16 职场文书
安全施工标语
2014/06/07 职场文书
学习教师法的心得体会
2014/09/03 职场文书
三下乡个人总结
2015/03/04 职场文书
网站文案策划岗位职责
2015/04/14 职场文书
高一军训感想
2015/08/07 职场文书
SQL Server一个字符串拆分多行显示或者多行数据合并成一个字符串
2022/05/25 SQL Server