WordPress中使主题支持小工具以及添加插件启用函数


Posted in PHP onDecember 22, 2015

让主题支持小工具
WordPress 的小工具(widget)是一大特色,它让用户自由拖动组合内容,而且任何插件和主题都可以添加一个额外的小工具,增加扩展性。

默认情况下,一个主题并不会支持小工具,需要主题开发者启用小工具功能并把小工具在相应的前台位置调用出来,这样用户才能在后台直接拖动生成侧边栏。

本文就来教你如何激活小工具功能,并且添加一个侧边栏,最后在前台显示出来。

注册侧边栏

默认的,后台外观下是没有 “小工具” 这个菜单按钮的,如果想要让他出现,就至少需要注册一个侧边栏,否则即使显示出来,也没有用。

注册一个侧边栏需要使用 register_sidebar() 函数,用法比较简单,只有一个属性,填上需要的信息就行了。

register_sidebar( array(
 'name' => __( '默认侧边栏', 'Bing' ),//侧边的名字
 'id' => 'widget_default',//侧边栏的 ID,注册多个侧边栏的时候不要重复
 'description' => __( '侧边栏的描述', 'Bing' ),//侧边栏的描述,会在后台显示
 'before_widget' => '<div class="widget %2$s">',//侧边栏里的小工具的开头代码,可以在里边使用 %2$s 来调用小工具的 ID,实现给每个小工具添加不同的样式
 'after_widget' => '</div>',//侧边栏里的小工具的结尾代码
 'before_title' => '<h3 class="widget-title">',//侧边栏里的小工具的标题的开头代码
 'after_title' => '</h3>'//侧边栏里的小工具的标题的结尾代码
) );

运用上边的例子代码,就能创建出一个侧边栏,外观下也显示 “小工具” 按钮了。

WordPress中使主题支持小工具以及添加插件启用函数

在这个侧边栏里,用户就可以自由的添加小工具了。复制代码,还可以创建更多的侧边栏。

调用侧边栏

光注册是没有意义的,用户添加之后,还要把小工具显示在前台才可以,这就用到了 dynamic_sidebar() 函数。

一般情况下,我们需要先判断一下小工具区域内是否添加了小工具,如果添加了,则显示小工具,否则提示用户添加小工具。判断侧边栏里是否被添加了小工具需要使用 is_active_sidebar() 函数。

<?php
if( is_active_sidebar( 'widget_default' ) ){
 echo '<aside id="sidebar">';
  dynamic_sidebar( 'widget_default' );
 echo '</aside>';
}else{
 echo '<p>请设置小工具</p>';
}
?>

非常简单吧,调用好后,前台的小工具就会按照注册时给出的格式一个一个的输出了。

添加插件启用函数
register_activation_hook() 可以让你添加一个函数,这个函数会在指定插件启用时执行,一般用于插件开发。

用法

register_activation_hook( $file, $function );

参数

$file

(字符串)(必须)需要在启用时执行函数的插件的主文件路径,如果是当前插件,直接写 __FILE__ 即可。

$function

(回调函数)(必须)执行的函数。

例子

function Bing_myplugin_activate(){
 global $wpdb;
 $wpdb->query( '' );//创建一些数据表
}
register_activation_hook( __FILE__, 'Bing_myplugin_activate' );

其它

此函数位于:wp-includes/plugin.php

PHP 相关文章推荐
PHP简单系统数据添加以及数据删除模块源文件下载
Jun 07 PHP
php生成静态文件的多种方法分享
Jul 17 PHP
如何用PHP实现插入排序?
Apr 10 PHP
php与java通过socket通信的实现代码
Oct 21 PHP
php中strtotime函数用法详解
Nov 15 PHP
Yii使用ajax验证显示错误messagebox的解决方法
Dec 03 PHP
smarty自定义函数htmlcheckboxes用法实例
Jan 22 PHP
php获取ajax的headers方法与内容实例
Dec 27 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
Feb 11 PHP
php语法检查的方法总结
Jan 21 PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
Sep 27 PHP
PHP的new static和new self的区别与使用
Nov 27 PHP
配置eAccelerator和XCache扩展来加速PHP程序的执行
Dec 22 #PHP
PHP使用mkdir创建多级目录的方法
Dec 22 #PHP
PHP按指定键值对二维数组进行排序的方法
Dec 22 #PHP
php删除数组中重复元素的方法
Dec 22 #PHP
yii2.0实现验证用户名与邮箱功能
Dec 22 #PHP
PHP内核探索之解释器的执行过程
Dec 22 #PHP
PHP内核探索之变量
Dec 22 #PHP
You might like
模拟xcopy的函数
2006/10/09 PHP
php动态生成JavaScript代码
2009/03/09 PHP
完美利用Yii2微信后台开发的系列总结
2016/07/18 PHP
ExtJS下grid的一些属性说明
2009/12/13 Javascript
jQuery 美元符冲突的解决方法
2010/03/28 Javascript
获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)
2011/02/14 Javascript
仅IE6/7/8中innerHTML返回值忽略英文空格的问题
2011/04/07 Javascript
JQuery鼠标移到小图显示大图效果的方法
2015/06/10 Javascript
Webpack 实现 AngularJS 的延迟加载
2016/03/02 Javascript
jQuery UI结合Ajax创建可定制的Web界面
2016/06/22 Javascript
vue-dialog的弹出层组件
2020/05/25 Javascript
javascript实现日期三级联动下拉框选择菜单
2020/12/03 Javascript
NodeJs的fs读写删除移动监听
2017/04/28 NodeJs
使用jQuery.Pin垂直滚动时固定导航
2017/05/24 jQuery
浅谈Vue 初始化性能优化
2017/08/31 Javascript
Vue.js 点击按钮显示/隐藏内容的实例代码
2018/02/08 Javascript
vue input输入框关键字筛选检索列表数据展示
2020/10/26 Javascript
jQuery操作cookie的示例代码
2019/06/05 jQuery
小程序自定义圆形进度条
2020/11/17 Javascript
JavaScript使用setTimeout实现倒计时效果
2021/02/19 Javascript
[43:47]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第一局
2016/03/05 DOTA
[01:08:32]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第二场 1月18日
2021/03/11 DOTA
python 七种邮件内容发送方法实例
2014/04/22 Python
在Django的form中使用CSS进行设计的方法
2015/07/18 Python
Python有序查找算法之二分法实例分析
2017/12/11 Python
python利用thrift服务读取hbase数据的方法
2018/12/27 Python
Python实用工具FuckIt.py介绍
2019/07/02 Python
解决Python 异常TypeError: cannot concatenate 'str' and 'int' objects
2020/04/08 Python
python和c语言哪个更适合初学者
2020/06/22 Python
python Matplotlib数据可视化(1):简单入门
2020/09/30 Python
Python pip 常用命令汇总
2020/10/19 Python
澳大利亚著名的纺织品品牌:Canningvale
2020/05/05 全球购物
奥巴马获胜演讲稿
2014/05/15 职场文书
开展党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
python3实现常见的排序算法(示例代码)
2021/07/04 Python
Mysql binlog日志文件过大的解决
2021/10/05 MySQL