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 相关文章推荐
图书管理程序(一)
Oct 09 PHP
Notice: Undefined index: page in E:\PHP\test.php on line 14
Nov 02 PHP
PHP把小数转成整数3种方法
Jun 30 PHP
PHP类中的魔术方法(Magic Method)简明总结
Jul 08 PHP
thinkphp模板输出技巧汇总
Nov 24 PHP
浅谈PHP中JSON数据操作
Jul 01 PHP
PHP合并discuz用户脚本的方法
Aug 04 PHP
WordPress的文章自动添加关键词及关键词的SEO优化
Mar 01 PHP
PHP7新特性foreach 修改示例介绍
Aug 26 PHP
在php7中MongoDB实现模糊查询的方法详解
May 03 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
Dec 26 PHP
PHP count()函数讲解
Feb 03 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
apache+mysql+php+ssl服务器之完全安装攻略
2006/09/05 PHP
将RTF格式的文件转成HTML并在网页中显示的代码
2006/10/09 PHP
UCenter中的一个可逆加密函数authcode函数代码
2010/07/20 PHP
浅析php变量修饰符static的使用
2013/06/28 PHP
WordPress中设置Post Type自定义文章类型的实例教程
2016/05/10 PHP
关于laravel 子查询 & join的使用
2019/10/16 PHP
jquery下div 的resize事件示例代码
2014/03/09 Javascript
jquery如何把数组变为字符串传到服务端并处理
2014/04/30 Javascript
Express.JS使用详解
2014/07/17 Javascript
a标签的href与onclick事件的区别详解
2014/11/12 Javascript
深入分析jQuery的ready函数是如何工作的(工作原理)
2015/12/17 Javascript
解决jQuery ajax请求在IE6中莫名中断的问题
2016/06/20 Javascript
AngularJs  Using $location详解及示例代码
2016/09/02 Javascript
JavaScript中数组slice和splice的对比小结
2016/09/22 Javascript
vue2.0的contextmenu右键弹出菜单的实例代码
2017/07/24 Javascript
Node.js的Koa实现JWT用户认证方法
2018/05/05 Javascript
JS获取子节点、父节点和兄弟节点的方法实例总结
2018/07/06 Javascript
Angular8路由守卫原理和使用方法
2019/08/29 Javascript
24行JavaScript代码实现Redux的方法实例
2019/11/17 Javascript
使用python调用浏览器并打开一个网址的例子
2014/06/05 Python
python类继承与子类实例初始化用法分析
2015/04/17 Python
Python利用operator模块实现对象的多级排序详解
2017/05/09 Python
python下实现二叉堆以及堆排序的示例
2017/09/29 Python
python RabbitMQ 使用详细介绍(小结)
2018/11/08 Python
值得收藏,Python 开发中的高级技巧
2018/11/23 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
2019/04/03 Python
python 将字符串中的数字相加求和的实现
2019/07/18 Python
详解Python+Selenium+ChromeDriver的配置和问题解决
2021/01/19 Python
Redbubble法国:由独立艺术家设计的独特产品
2019/01/08 全球购物
毕业生自我鉴定实例
2014/01/21 职场文书
《掌声》教学反思
2014/02/23 职场文书
出纳员岗位职责
2014/03/13 职场文书
小学思品教学反思
2016/02/20 职场文书
Pandas搭配lambda组合使用详解
2022/01/22 Python
动画《平凡职业成就世界最强》宣布制作OVA
2022/04/01 日漫
Vue router配置与使用分析讲解
2022/12/24 Vue.js