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 相关文章推荐
Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
Apr 18 PHP
php带密码功能并下载远程文件保存本地指定目录 修改加强版
May 16 PHP
PHP排序算法的复习和总结
Feb 15 PHP
PHP中使用SimpleXML检查XML文件结构实例
Jan 07 PHP
使用纯php代码实现页面伪静态的方法
Jul 25 PHP
ThinkPHP模型详解
Jul 27 PHP
php实现的网页版剪刀石头布游戏示例
Nov 25 PHP
PHP简单读取xml文件的方法示例
Apr 20 PHP
php unlink()函数使用教程
Jul 12 PHP
php实现单笔转账到支付宝功能
Oct 09 PHP
PDO::prepare讲解
Jan 29 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
Oct 27 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 COOKIE设置为浏览器进程
2009/06/21 PHP
php file_put_contents()功能函数(集成了fopen、fwrite、fclose)
2011/05/24 PHP
PHP代码优化技巧小结
2015/09/29 PHP
php中strtotime函数性能分析
2016/11/20 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
javascript eval函数深入认识
2009/02/21 Javascript
jQuery 点击图片跳转上一张或下一张功能的实现代码
2010/03/12 Javascript
js禁止页面使用右键(简单示例代码)
2013/11/13 Javascript
JavaScript中实现无缝滚动、分享到侧边栏实例代码
2016/04/06 Javascript
JS定时器使用,定时定点,固定时刻,循环执行详解
2016/05/31 Javascript
深入理解Ajax的get和post请求
2016/06/02 Javascript
JQuery对ASP.NET MVC数据进行更新删除
2016/07/13 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
2016/09/08 Javascript
详解使用grunt完成requirejs的合并压缩和js文件的版本控制
2017/03/02 Javascript
AngularJS的脏检查深入分析
2017/04/22 Javascript
详解Vue爬坑之vuex初识
2017/06/14 Javascript
setTimeout与setInterval的区别浅析
2019/03/23 Javascript
微信小程序中的列表切换功能实例代码详解
2020/06/09 Javascript
python使用paramiko实现远程拷贝文件的方法
2016/04/18 Python
Python数据类型详解(二)列表
2016/05/08 Python
Python实现二叉树结构与进行二叉树遍历的方法详解
2016/05/24 Python
python连接数据库的方法
2017/10/19 Python
Python实现基于PIL和tesseract的验证码识别功能示例
2018/07/11 Python
python 最简单的实现适配器设计模式的示例
2020/06/30 Python
斯洛伐克时尚服装网上商店:Cellbes
2016/10/20 全球购物
如何选择使用结构还是类
2014/05/30 面试题
高中的职业生涯规划书
2013/12/28 职场文书
幼教简历自我评价
2014/01/28 职场文书
新闻编辑求职信
2014/04/09 职场文书
《从现在开始》教学反思
2014/04/15 职场文书
乡镇党委书记个人整改措施
2014/09/15 职场文书
迎新生欢迎词
2015/01/23 职场文书
关于倡议书的范文
2015/04/29 职场文书
鸦片战争观后感
2015/06/09 职场文书
MySQL之DML语言
2021/04/05 MySQL
mysql备份策略的实现(全量备份+增量备份)
2021/07/07 MySQL