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与XML联手进行网站编程代码实例
Jul 10 PHP
通过5个php实例细致说明传值与传引用的区别
Aug 08 PHP
PHP中使用CURL模拟登录并获取数据实例
Jul 01 PHP
PHPMailer发送HTML内容、带附件的邮件实例
Jul 01 PHP
Dwz与thinkphp整合下的数据导出到Excel实例
Dec 04 PHP
ThinkPHP表单数据智能写入create方法实例分析
Sep 27 PHP
PHP设计模式之简单投诉页面实例
Feb 24 PHP
php中使用GD库做验证码
Mar 31 PHP
bindParam和bindValue的区别以及在Yii2中的使用详解
Mar 12 PHP
PHP保存Base64图片base64_decode的问题整理
Nov 04 PHP
通过PHP实现用户注册后邮箱验证激活
Nov 10 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
Dec 29 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的方法
2007/03/16 PHP
PHP Session变量不能传送到下一页的解决方法
2009/11/27 PHP
thinkphp实现多语言功能(语言包)
2014/03/04 PHP
apache中为php 设置虚拟目录
2014/12/17 PHP
PHP数组中头部和尾部添加元素的方法(array_unshift,array_push)
2017/04/10 PHP
详解如何实现Laravel的服务容器的方法示例
2019/04/15 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
解决IE下select标签innerHTML插入option的BUG(兼容IE,FF,Opera,Chrome,Safari)
2010/05/13 Javascript
IE8 中使用加速器(Activities)
2010/05/14 Javascript
判断浏览器的javascript版本的代码
2010/09/03 Javascript
zTree插件之单选下拉菜单实例代码
2013/11/07 Javascript
Script标签与访问HTML页面详解
2014/01/10 Javascript
PHP PDO操作总结
2014/11/17 Javascript
JS实现超简单的仿QQ折叠菜单效果
2015/09/21 Javascript
jQuery随手笔记之常用的jQuery操作DOM事件
2015/11/29 Javascript
实例分析JS与Node.js中的事件循环
2017/12/12 Javascript
vue 子组件向父组件传值方法
2018/02/26 Javascript
VUE路由动态加载实例代码讲解
2019/08/26 Javascript
js实现轮播图效果 z-index实现轮播图
2020/01/17 Javascript
[01:07:47]Secret vs Optic Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
python快速查找算法应用实例
2014/09/26 Python
python 文件操作api(文件操作函数)
2016/08/28 Python
python 使用值来排序一个字典的方法
2018/11/16 Python
深入了解Python iter() 方法的用法
2019/07/11 Python
python文字和unicode/ascll相互转换函数及简单加密解密实现代码
2019/08/12 Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
2020/04/02 Python
Python 在局部变量域中执行代码
2020/08/07 Python
matplotlib更改窗口图标的方法示例
2021/02/03 Python
前端隐藏出边界内容的实现方法
2016/04/14 HTML / CSS
利用CSS3的线性渐变linear-gradient制作边框的示例
2016/06/02 HTML / CSS
Ruby如何创建一个线程
2013/03/10 面试题
优秀团队获奖感言
2014/02/19 职场文书
优秀员工演讲稿
2014/05/19 职场文书
自查自纠工作情况报告
2014/10/29 职场文书
爱心募捐通知范文
2015/04/27 职场文书
消防验收申请报告
2015/05/15 职场文书