WordPress小工具开发教程(网站公告)

BY TIANQIXIN · 2012 年 12 月 26 日

 

wordpress主题小工具,可以自由拖动到侧边栏,并在前台实现相应功能!一般自带的小工具功能有限,我们可以通过自己开发小工具来增强wordpress的侧边栏功能。
制作wordpress小工具需要用到WP_Widget类,该类位于wp-includes\widgets.php,有兴趣的同学可以打开看看,基本上我们只要扩展这个类就可以开发自己的小工具了。
本站以网站公告为例,最终效果图如下:
前台侧边栏显示:

后台显示:

OK,下来让我们一步步来创建这个小工具扩展。

第一步:创建gonggao.php文件

在你的主题目录下创建gonggao.php,并在你的functions.php引用该文件。
gonggao.php文件代码如下:

class gonggaoWidget extends WP_Widget {
/*
* 参数:
* $widget_ops -- 用来保存类名和描述,以便在主题控制面板正确显示小工具信息
* $control_ops -- 是可选参数,用来定义小工具在控制面板显示的宽度和高度
* 最后是关键的一步,调用WP_Widget来初始化我们的小工具
**/
function gonggaoWidget(){
$widget_ops = array('classname'=>'site_gonggao','description'=>'网站公告');
$control_ops = array('width'=>300,'height'=>300);
$this->WP_Widget(false, '网站公告', $widget_ops, $control_ops);
}
}

说明:
构造函数 gonggaoWidget() 中定义了两个数组变量$widget_ops和$control_pos,传递给$this->WP_Widget()进行小工具的初始化。
WP_Widget参数详解:

  • 第一个参数是$id_base,我们一般设置成false即可,也可以使用小工具的名字,如 ‘gonggaoWidget’;
  • 第二个参数指定小工具显示的名称;
  • 第三个参数指定类名和小工具的描述,这两个参数结合在一起的效果如下
  • 第四个参数定义小工具的宽度和高度,一般只需要前三个参数即可,它影响的效果是当你把小工具拖到侧边栏时的宽度和高度。

第二步:义的三个重要函数:form()、update()、widget()

小工具扩展类需要定义的三个重要函数:form()、update()、widget()
form() 函数一般是用来显示小工具的选项设置表单,表单的内容根据需要自己定义,示例小工具定义了4个选项可供设置:

  • title:模块标题,可设默认值,如“分类文章”;
  • title_en:英文标题,可设默认值,如“Title”;
  • num:显示文章数量,可设默认值,如 10;
  • cat:分类目录ID,,可设默认值,如0,即显示所有分类下的文章

form() 函数代码:

function form($instance){
//title:标题,text:内容
$instance = wp_parse_args((array)$instance,array('title'=>'标题','text'=>'内容'));//默认值
$title = htmlspecialchars($instance['title']);
$text = $instance['text']; echo '<p style="text-align:left;"><label for="'.$this->get_field_name('title').'">标题:<input style="width:200px;" id="'.$this->get_field_id('title').'" name="'.$this->get_field_name('title').'" type="text" value="'.$title.'" /></label></p>';
echo '<p style="text-align:left;"><label for="'.$this->get_field_name('text').'">内容:<br/><textarea style="width:200px;" id="'.$this->get_field_id('text').'" name="'.$this->get_field_name('text').'" type="text" /> ' . $text . '</textarea></label></p>'; }

设置表单中$instance数组的2个key:title、text(key名可自由定义),然后由 wordpress 的函数 get_field_name 和 get_field_id 将表单中的设置项都保存到相应的数组Key中。
update() 函数代码:
update() 函数用于更新保存由 form() 表单传递来的设置项数据。

function update($new_instance,$old_instance){
$instance = $old_instance;
$instance['title'] = strip_tags(stripslashes($new_instance['title']));
$instance['text'] = $new_instance['text']; return $instance;
}

注:此函数也可省略不定义,默认返回的将是 $new_instance,也就是说在小工具选项中所做的更改同样能得到保存,但为了保证表单中数据的安全性,我们可以定义一下,并可使用php函数 strip_tags 和 stripslashes 来过滤掉输入的不合法的字符,本实例对公告文本的html没有进行过滤,用户可根据自身情况来过滤这些字符串。
widget() 函数代码:
widget() 函数定义小工具在前台页面中的显示样式

function widget($args, $instance){
extract($args);
$title = apply_filters('widget_title', empty($instance['title']) ? __('标题Title','gonggao_title') : $instance['title']);//小工具前台标题
$text = apply_filters('widget_text', empty($instance['text']) ? __('内容Content','gonggao_content') : $instance['text']);//小工具前台标题 echo $before_widget;
if( $title ) echo $before_title . $title . $after_title; if( $text ) echo $text; echo $after_widget;
}

先使用了extract函数把数组中的keys转换成变量,然后从$instance中取出保存的各个key的值,再输出站点的公告标题与公告内容。

最后:注册小工具

到此,自定义小工具类 gonggaoWidget 已经定义完成,最后我们还需要一步:注册小工具类,以完成对小工具的激活。
在你主题的文件目录下的functions.php文件末尾添加以下代码完成网站公告小工具注册。

require_once('gonggao.php');
register_widget('gonggaoWidget');

网站公告小工具(完整代码)

完整代码如下:

<?php
/*
* author by:wordpress教程网(http://www.wpnoob.cn)
* url:
*
*/
class gonggaoWidget extends WP_Widget {
/*
* 参数:
* $widget_ops -- 用来保存类名和描述,以便在主题控制面板正确显示小工具信息
* $control_ops -- 是可选参数,用来定义小工具在控制面板显示的宽度和高度
* 最后是关键的一步,调用WP_Widget来初始化我们的小工具
**/
function gonggaoWidget(){
$widget_ops = array('classname'=>'site_gonggao','description'=>'网站公告');
$control_ops = array('width'=>250,'height'=>300);
$this->WP_Widget(false, '网站公告', $widget_ops, $control_ops);
} function form($instance){
//title:标题,text:内容
$instance = wp_parse_args((array)$instance,array('title'=>'标题','text'=>'内容'));//默认值
$title = htmlspecialchars($instance['title']);
$text = $instance['text']; echo '<p style="text-align:left;"><label for="'.$this->get_field_name('title').'">标题:<input style="width:200px;" id="'.$this->get_field_id('title').'" name="'.$this->get_field_name('title').'" type="text" value="'.$title.'" /></label></p>';
echo '<p style="text-align:left;"><label for="'.$this->get_field_name('text').'">内容:<br/><textarea style="width:200px;" id="'.$this->get_field_id('text').'" name="'.$this->get_field_name('text').'" type="text" /> ' . $text . '</textarea></label></p>'; } function update($new_instance,$old_instance){
$instance = $old_instance;
$instance['title'] = strip_tags(stripslashes($new_instance['title']));
$instance['text'] = $new_instance['text']; return $instance;
} function widget($args, $instance){
extract($args);
$title = apply_filters('widget_title', empty($instance['title']) ? __('标题Title','gonggao_title') : $instance['title']);//小工具前台标题
$text = apply_filters('widget_text', empty($instance['text']) ? __('内容Content','gonggao_content') : $instance['text']);//小工具前台标题 echo $before_widget;
if( $title ) echo $before_title . $title . $after_title; if( $text ) echo $text; echo $after_widget;
}
} ?> http://www.wpnoob.cn/a-246.html

WordPress小工具开发教程(网站公告)的更多相关文章

  1. 微信小程序开发教程目录

    本系列教程是自己在工作中使用到而记录的,没有顺序之分 如有错误之处,请给与指正,也不希望误导了别人 微信小程序开发教程目录 微信小程序之注册和入门 微信小程序之HTTPS请求 微信小程序开发之选项卡 ...

  2. 利用ncurses库开发终端工具箱(1)—— ToDoList小工具开发

    准备工作 腾讯云服务器(Ubuntu),C++编程语言 由于想输出界面中包含中文,所以安装库 libncursesw5,依次输入下面三行命令 sudo apt-get install libncurs ...

  3. alipay 小程序开发教程

    alipay 小程序开发教程 https://opendocs.alipay.com/mini/00ccmd 或访问开放平台:https://opendocs.alipay.com/mini/00cc ...

  4. 微信应用号来了,微信小程序开发教程!

    关注,QQ群,微信应用号社区 511389428,511389428 微信应用开放的服务和组件包含如下: 视图容器:视图(View).滚动视图.Swiper 基础内容:图标.文本.进度条 表单组件:按 ...

  5. Windows 桌面边栏小工具开发入门

          准备为网站做一个桌面通知功能的工具,现在网上一般是html5+js的比较多.虽然html5+js现在是web的开发主流,但是我们应用一般是windows系统.并且应使用中,需要打开谷歌或其 ...

  6. 微信小程序开发教程 #043 - 在小程序开发中使用 npm

    本文介绍了如何在微信小程序开发中使用 npm 中包的功能,大大提高微信小程序的开发效率,同时也是微信小程序系列教程的视频版更新. 微信小程序在发布之初没有对 npm 的支持功能,这也是目前很多前端开发 ...

  7. 微信小程序开发教程,大多数人都搞错的八个问题

    小程序目前被炒得沸沸扬扬,无数媒体和企业借机获取阅读流量. 这再次证明一点,微信想让什么火,真的就能让什么火.这种能力真是全中国再也没有人有了,政府也没有. 但四处传的消息很多是失真的,废话不说,先列 ...

  8. wordpress小程序安装教程

    推荐服务器特价优惠注册即可购买,1G双核一年只要88,真的是白菜价格,点击下面图片即可进入购买地址. 开源小程序发布一段时间了,很多人最近咨询了关于小程序的教程,实在太忙了,抽空写个基本的安装教程. ...

  9. 【原】得心应手小工具开发——IE代理快速切换工具

    一.引入 因为公司里上外网要经常换IE代理地址,每次切换地址都要进到Internet Options里去设置一番,经常切换的话很是麻烦,由于用了点时间作个小工具来方便自己. 二.实现思路 其实思路很简 ...

随机推荐

  1. hdu Robberies

    这道题目应该在理解上会有一点问题.这道题的概率不是用来加的,而是用来乘的.这道题要的是在能逃跑的前提下,获得的最大money,而题目中给的概率是被抓的概率,所以要先有一个预处理,之后只要列出状态转移方 ...

  2. lucene 3.0.2 基本操作入门

    转自:Bannings http://blog.csdn.net/zhangao0086/article/details/ 我们为什么需要Lucene? 任何的的查询功能都类似,都是对文本内容的搜索, ...

  3. 5. Configure the Image Service

    Controller Node: 1. sudo apt-get install glance python-glanceclient   2. sudo vi /etc/glance/glance- ...

  4. 【转】各版本IIS下ASP.net请求处理过程区别

    原文地址:http://www.cnblogs.com/fsjohnhuang/articles/2332074.html ASP.NET是一个非常强大的构建Web应用的平台,它提供了极大的灵活性和能 ...

  5. svn vs git

    SVN和Git比较,哪个好用,适用? GIT和SVN之间的五个基本区别 话说Git的区别

  6. linux消息队列的使用及内核实现原理

    mq_receive NAME mq_open - open a message queue SYNOPSIS #include <fcntl.h> /* For O_* constant ...

  7. Apache Spark源码走读之17 -- 如何进行代码跟读

    欢迎转载,转载请注明出处,徽沪一郎 概要 今天不谈Spark中什么复杂的技术实现,只稍为聊聊如何进行代码跟读.众所周知,Spark使用scala进行开发,由于scala有众多的语法糖,很多时候代码跟着 ...

  8. 每天php函数 - floatval() 获取变量的浮点值

    float floatval ( mixed $var ) 返回变量 var的 float 数值. var 可以是任何标量类型.你不能将 floatval() 用于数组或对象. <?php$va ...

  9. 动态样式语言Less学习笔记

    介绍资料参见:http://www.bootcss.com/p/lesscss/ LESS 将 CSS 赋予了动态语言的特性,如 变量, 继承,运算, 函数. LESS 既可以在 客户端 上运行 (支 ...

  10. 如何用Apache TCPMon来截获SOAP消息

    在WebService服务器和客户机之间会传递SOAP消息,有时我们需要得到这些消息以便调试,而Apache的TCPMon可以帮助我们做到这一点.  TCPMon的下载地址在http://ws.apa ...