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 相关文章推荐
第四节--构造函数和析构函数
Nov 16 PHP
php模板之Phpbean的目录结构
Jan 10 PHP
php 防止单引号,双引号在接受页面转义
Jul 10 PHP
Google Voice 短信发送接口PHP开源版(2010.5更新)
Jul 22 PHP
基于MySQL到MongoDB简易对照表的详解
Jun 03 PHP
常用PHP框架功能对照表
Oct 23 PHP
laravel 5 实现模板主题功能
Mar 02 PHP
微信 getAccessToken方法详解及实例
Nov 23 PHP
php简单计算年龄的方法(周岁与虚岁)
Dec 06 PHP
PHP迭代与递归实现无限级分类
Aug 28 PHP
PHP调用API接口实现天气查询功能的示例
Sep 21 PHP
laravel-admin 后台表格筛选设置默认的查询日期方法
Oct 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
PHP4引用文件语句的对比
2006/10/09 PHP
给初学PHP的5个入手程序
2006/11/23 PHP
PHP二维数组的去重问题解析
2011/07/17 PHP
php获取URL中带#号等特殊符号参数的解决方法
2014/09/02 PHP
php的mssql数据库连接类实例
2014/11/28 PHP
PHP实现的贪婪算法实例
2017/10/17 PHP
实例讲解PHP页面静态化
2018/02/05 PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
2018/05/12 PHP
jquery 插件实现图片延迟加载效果代码
2010/02/06 Javascript
JS控制一个DIV层在指定时间内消失的方法
2014/02/17 Javascript
JavaScript组合拼接字符串的效率对比测试
2014/11/06 Javascript
jQuery ui实现动感的圆角渐变网站导航菜单效果代码
2015/08/26 Javascript
WebSocket实现简单客服聊天系统
2017/05/12 Javascript
实现两个文本框同时输入的实例
2017/09/25 Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
2019/11/04 Javascript
微信小程序页面间传递数组对象方法解析
2019/11/06 Javascript
Ant Design moment对象和字符串之间的相互转化教程
2020/10/27 Javascript
js实现随机圆与矩形功能
2020/10/29 Javascript
nodejs中内置模块fs,path常见的用法说明
2020/11/07 NodeJs
[46:55]完美世界DOTA2联赛决赛 FTD vs Phoenix 第三场 11.08
2020/11/11 DOTA
python基础教程之简单入门说明(变量和控制语言使用方法)
2014/03/25 Python
django和vue实现数据交互的方法
2019/08/21 Python
pytorch点乘与叉乘示例讲解
2019/12/27 Python
基于nexus3配置Python仓库过程详解
2020/06/15 Python
pyqt5 textEdit、lineEdit操作的示例代码
2020/08/12 Python
解决pip安装的第三方包在PyCharm无法导入的问题
2020/10/15 Python
多视角3D可旋转的HTML5 Logo动画
2016/03/02 HTML / CSS
密封类可以有虚函数吗
2014/08/11 面试题
应届生文秘专业个人自荐信格式
2013/09/21 职场文书
环境科学专业个人求职信
2013/12/15 职场文书
退休感言
2014/01/28 职场文书
初中国旗下的演讲稿
2014/08/28 职场文书
后备干部推荐材料
2014/12/24 职场文书
解决Goland 同一个package中函数互相调用的问题
2021/05/06 Golang
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
2021/06/11 Python
python中使用redis用法详解
2022/12/24 Redis