我的编程空间,编程开发者的网络收藏夹
学习永远不晚
位置:首页-资讯-开源

wordpress开发之插件开发初识(wordpress插件开发基础)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

wordpress开发之插件开发初识(wordpress插件开发基础)

首先,你要在wp-content/plugins/下建立一个文件夹,文件夹的名字最好只由字母、数字、“-”和下滑组成。同时,还要在这个文件夹下建立一个同名的php文件。比如你的文件夹名字为my-plugin,则php的名字就是my-plugin.php,这个文件做为你plugin的主文件,像主题文件的sytle.css文件一样,它的头部包含了对这个插件的描述信息。下面是一个简单的例子:


复制代码代码如下:

< ?php

?>

另外如果你想要把你的插件提交到wordpress.org上,你还要在文件夹中添加一个readme.txt文件。就像主题中的style.css文件一样。类似的,readme.txt的头部包含了对这个插件的基本描述信息。关于readme.txt的格式,可以参考WordPress的官方示例。因为这里只是简单的写一个可用的Plugin,就不介绍reaadme.txt了。

WordPress的插件其实就是一堆php的方法。这些方法通过调用系统自带的钩子来为博客增加新的功能。下面我们就来看一下什么是系统的钩子。

插件钩子

WordPress定义了很多不同用途的钩子,在Wordpress运行的不同阶段,它会检测当前阶段是否注册了钩子函数,如果有,则优先执行这些函数。添加filter的方法如下:


复制代码代码如下:add_filter('filter_name', 'filter_callback_function_name', $priority=10, $accepted_args=1);

add_fitler的四个参数分别是:要挂载的钩子的名称,钩子的回调函数,回调函数的优先级,回调函数的参数个数。一个例子如下:


复制代码代码如下:

add_fitler('the_title', 'my_title', 10, 2);

function my_title($title, $id) {

return News:$title;

}

这个例子中,我们在the_title钩子上挂载了一个my_title的函数,这个函数接受两个参数,每别是文章的和ID,当Wordpress要把文章post给浏览器之前,会首先调用到这个函数,在这里,我们在每个文章的前加了一个“News:”。

关于Wordpress所提供的所有钩子,可以参考Wordpress的官网文档:Filter Reference。

另外你可能会在某些文章中看到令一个添加钩子的函数add_action。我们来看一下wordpress的内核你或许就明白了:


复制代码代码如下:

function add_action($tag, $function_to_add, $priority = 10, $accept_args = 1) {

return add_filter($tag, $function_to_add, $priority, $accept_args);

}

所以add_action和add_filter本质上没有任何区别。

之前说过,Wordpress会在系统的不同阶段调用不同的钩子,其实,如果需要,你也可以在你的代码里手动调用这些钩子。方法如下:


复制代码代码如下:

$return_values = apply_filtere('filter_name', $args ... );

有了这些filter,你就可以在wordpress处理流程中的任意地方修改数据内容,实现插件所需要的功能。

Option机制

仅仅有了filter还不够,很多插件还需要保存一些信息,比方插件的属性设置之类,这个时候你就要用到Wordpress的Option机制了。

WordPress的Option机制通过add_option,get_option, update_option三个函数来实现,三个函数的定义如下:


复制代码代码如下:

add_option($name, $value, $deprecated, $autoload);

get_option($name);

update_option($option_name, $newvalue);

add_option有4个参数,功能分别如下:

$name:必选,变量名

$value:可选,变量值,默认为空字符

$deprecated:没用的参数,纯粹是历史遗留问题。留着它只是为了兼容以有的插件。当然如果你要调用到后面的$autoload,你需要为它传入一个空字符或null。

$autoload: “yes” or “no”,默认是”yes”,当设为”yes”时,该属性会在wp_load_alloptions调用时获取到。

get_option用来获取你添加的参数,同时系统中已经默认定义了一些参数,你可以参考Wordpress的官方列表:Option Refernce。

而update_option则是用来更新option。

三个方法都比较好理解,我也不多说了。通过这三个方法你可以把你需要长久保存的数据放在数据库中。

设置页面

有了filter和option,我们已经完成了一个插件的核心工作。不过做为一个插件,它经常还需要为用户提供一个设置页面,也就是在Wordpress后台插件列表中所看到的settings链接,如下图:

settings

这里我们用一个最简单的例子还说明如何添加一个设置页面:


复制代码代码如下:

<?php class wctest{

public function __construct(){

if(is_admin()){

add_action('admin_menu', array($this, 'add_plugin_page'));

add_action('admin_init', array($this, 'page_init'));

}

}

public function add_plugin_page(){

// This page will be under "Settings"

add_options_page('Settings Admin', 'Settings', 'manage_options', 'test-setting-admin', array($this, 'create_admin_page'));

}

public function create_admin_page(){

?>

<div>

< ?php screen_icon(); ?>

<h2>Settings</h2>

<form method=”post” action=”options.php”>

< ?php

// This prints out all hidden setting fields

settings_fields(‘test_option_group’);

do_settings_sections(‘test-setting-admin’);

?>

< ?php submit_button(); ?>

</form>

</div>

< ?php

}

public function page_init(){

register_setting(‘test_option_group’, ‘array_key’, array($this, ‘check_ID’));

add_settings_section(

‘setting_section_id’,

‘Setting’,

array($this, ‘print_section_info’),

‘test-setting-admin’

);

add_settings_field(

‘some_id’,

‘Some ID(Title)’,

array($this, ‘create_an_id_field’),

‘test-setting-admin’,

‘setting_section_id’

);

}

public function check_ID($input){

if(is_numeric($input['some_id'])){

$mid = $input['some_id'];

if(get_option(‘test_some_id’) === FALSE){

add_option(‘test_some_id’, $mid);

}else{

update_option(‘test_some_id’, $mid);

}

}else{

$mid = ”;

}

return $mid;

}

public function print_section_info(){

print ‘Enter your setting below:’;

}

public function create_an_id_field(){

?><input type=”text” id=”input_whatever_unique_id_I_want” name=”array_key[some_id]” value=”<?=get_option(‘test_some_id’);?/>” />< ?php

}

}

$wctest = new wctest();

上面创建的类会在你的Wordpress后台添加一个新页面,同时它允许用户保存一个id值。

到这里,我们一个简单的Wordpress插件就完成了。虽然这个插件本身没有什么用途。谢谢大家。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

wordpress开发之插件开发初识(wordpress插件开发基础)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

wordpress开发之插件开发初识(wordpress插件开发基础)

首先,你要在wp-content/plugins/下建立一个文件夹,文件夹的名字最好只由字母、数字、“-”和下滑组成。同时,还要在这个文件夹下建立一个同名的php文件。比如你的文件夹名字为my-plugin,则php
2022-06-12

怎么进行WordPress插件开发之创建、停用、删除插件

这篇文章主要介绍了怎么进行WordPress插件开发之创建、停用、删除插件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。插件存放目录wp-content/plugins创建一
2023-06-06

MyBatis ORM插件开发基础

MyBatis 是一款广泛使用的 Java 持久层框架,它通过 XML 或注解的方式将 Java 对象与 SQL 语句进行映射,从而简化了数据访问层的开发。插件开发是 MyBatis 扩展功能的一种方式,允许开发者自定义框架的行为。以下是
MyBatis ORM插件开发基础
2024-09-15

Python开发(基础):初识Pytho

Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、G
2023-01-31

如何开发jQuery插件

今天小编给大家分享一下如何开发jQuery插件的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。jQuery是javascrip
2023-06-26

Springboot插件如何开发

本篇内容主要讲解“Springboot插件如何开发”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Springboot插件如何开发”吧!一 背景项目新增监控系统,对各个系统进行监控接口调用情况,初
2023-06-30

Springboot插件怎么开发

本篇内容主要讲解“Springboot插件怎么开发”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Springboot插件怎么开发”吧!一 背景项目新增监控系统,对各个系统进行监控接口调用情况,初
2023-07-06

Chrome 插件开发指南

开发插件需要使用前端技术:html css javascript。本文就从入门开始讲述如何开发一款 chrome 插件。

OpenHarmony之DevEco Device Tool 插件开发介绍

本文介绍OpenHarmony系统开发或者设备开发常用的IDE插件开发、发布过程,通过以上步骤,即可在VSCode、DevEco Device Tool中使用发布的插件。

web前端:vue开发插件

编程学习网:PEARSONVUE则是PEARSONEDUCATION旗下的从事电子化考试服务的机构,它致力于依靠快捷的互联网,先进的计算机技术及优质的服务为你提供安全、可靠且实用的国际认证考试和安全职业执照及认证程序。其发展速度之迅猛,主要得益于IT技术的飞速发展、得益于IT认证浪潮的推动。
web前端:vue开发插件
2024-04-23

Maven3.x 插件开发入门

1、创建插件项目:(项目原型选择插件类型)    2、Artifact Id 以xxx-maven-plugin命名,如:gr-maven-plugin,下面Version的内容无所谓。    3、创建完毕之后的结构是这样:    4、修改
2023-01-31

CMS插件开发必备技能:成为一名合格的插件开发者

CMS插件开发必备技能,帮助你成为一名合格的插件开发者,掌握插件开发的核心技术。
CMS插件开发必备技能:成为一名合格的插件开发者
2024-02-05

编程热搜

  • wordpress错位如何解决
    这篇文章主要介绍“wordpress错位如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“wordpress错位如何解决”文章能帮助大家解决问题。wordpress
    wordpress错位如何解决
  • 帝国cms调用栏目别名的修改步骤
    请留意下面的修改方法 修改后栏目别名使用 !--bname--] 调用 打开e/class/t_functions.php搜索定位到带模板的栏目导航标签修改1复制代码代码如下://替换变量$bclassname=$class_r[$clas
    帝国cms调用栏目别名的修改步骤
  • 动易Cms MAC验证视图失败的解决方法
    “/”应用程序中的服务器错误。 -------------------------------------------------------------------------------- 验证视图状态 MAC
    动易Cms  MAC验证视图失败的解决方法
  • DEDECMS如何支持中文水印
    DEDECMS如何支持中文水印?修改/include/inc_photograph.php,在165行处加这行代码:$w_text = iconv("GB2312","UTF-8",$w_text);OK,现在可以用中文做水印了,但默认的字体大小是5,中文字体
    DEDECMS如何支持中文水印
  • 快速了解Discuz!程序文件功能
    相信有不少人热衷于基于修改原有系统文件所做的插件,当然了解程序文件功能是最重要的,下面我把Discuz! X2.0主要的程序文件功能说一下。Tips:Q:针对说明的文件是?A:我只基于原版文件对upload目录中基本的程序文件(php,ht
    快速了解Discuz!程序文件功能
  • DedeCMS编辑器fck更换成eWebEditor编辑器具体步骤
    将eWebEditor编辑器插入DEDE后台的效果: 完全Word在线编辑的功能,让你从此摆脱发可编辑器卡得死,进入流畅干净编辑界面新时代。 下面是具体步骤: 首先,你要知道eWebEditor是一个什么工具。 eWebEditor是由国
    DedeCMS编辑器fck更换成eWebEditor编辑器具体步骤
  • 允许 WordPress 上传任意文件的方法
    此时如果上传一个不在预定义编程客栈的安全扩展名列表,如.lrc,会报kAtKhHRl错: F编程客栈ile type does not meet security guidelines. Try another. 解决此问题有两方法: 在
    允许 WordPress 上传任意文件的方法
  • dedecms 软件下载模块中添加下载方式为迅雷下载联盟代码
    修改 /plus/download.php 文件 www.cppcns.com查找
    dedecms 软件下载模块中添加下载方式为迅雷下载联盟代码
  • dedecms网站tag标签全部静态化的解决方法
    更改tags.php文件在根目录 找到$tag = FilterSearch(urldecode($tag)); 替换为:$tag = urldecode($tag); 更改文件arc.taglist.class.php文件文件所在的路径是
    dedecms网站tag标签全部静态化的解决方法
  • 帝国CMS远程保存图片的方法
    本文实例讲述了帝国cms远程保存图片的方法。分享给大家供大家参考。 具体实现方法如下:复制代码代码如下:
    帝国CMS远程保存图片的方法

目录