广告
返回顶部
首页 > 资讯 > CMS >wordpress开发之插件开发初识(wordpress插件开发基础)
  • 379
分享到

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

wordpress插件开发 2022-06-12 02:06:57 379人浏览 薄情痞子
摘要

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

首先,你要在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插件就完成了。虽然这个插件本身没有什么用途。谢谢大家。

--结束END--

本文标题: wordpress开发之插件开发初识(wordpress插件开发基础)

本文链接: https://www.lsjlt.com/news/32162.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • wordpress开发之插件开发初识(wordpress插件开发基础)
    首先,你要在wp-content/plugins/下建立一个文件夹,文件夹的名字最好只由字母、数字、“-”和下滑组成。同时,还要在这个文件夹下建立一个同名的php文件。比如你的文件夹名字为my-...
    99+
    2022-06-12
    wordpress 插件开发
  • WordPress插件开发教程1:开发第一个WordPress插件
    一、创建一个插件         第一步:在 wp-content \ plugins 目录新建一个目录,随便起个名字,比如:my-first-plugin。         第二步:进入 my-first-plugin 目录,新建一个PH...
    99+
    2023-09-10
    Wordpress WordPress插件开发教程 WordPress插件开发 WordPress插件教程 WordPress开发教程
  • Flutter插件开发-(基础篇)
          在开发flutter项目的时分通常会运用一些三方的的packages或许plugin,二者的区别:packages主要是包括的Dart代码块,而plugin则包括iOS和android的代码。 因此来说创立plugin和pack...
    99+
    2023-10-25
    flutter android vscode
  • 怎么进行WordPress插件开发之创建、停用、删除插件
    这篇文章主要介绍了怎么进行WordPress插件开发之创建、停用、删除插件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。插件存放目录wp-content/plugins创建一...
    99+
    2023-06-06
  • Python开发(基础):初识Pytho
    Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣...
    99+
    2023-01-31
    基础 Python Pytho
  • FastAdmin插件开发辅助增强插件
    本人开发的FastAdmin插件开发辅助增强插件 不改变官方的开发习惯,但更丝滑,尽最大的努力生成你想要的代码 非常重要 非常重要 非常重要 写在最前面是为了不要漏了,导致插件没有正常工作。 编写代码...
    99+
    2023-09-01
    php 数据库 安全
  • uni-app之android原生插件开发
    一 插件简介 1 当HBuilderX中提供的能力无法满足App功能需求,需要通过使用Andorid/iOS原生开发实现时,可使用App离线SDK开发原生插件来扩展原生能力。 2 插件类型有两种,Module模式和Component模式 ...
    99+
    2023-10-11
    uni-app
  • 如何开发MyBatis插件
    本篇内容介绍了“如何开发MyBatis插件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.MyBatis...
    99+
    2022-10-19
  • 如何开发jQuery插件
    今天小编给大家分享一下如何开发jQuery插件的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。jQuery是javascrip...
    99+
    2023-06-26
  • Springboot插件如何开发
    本篇内容主要讲解“Springboot插件如何开发”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Springboot插件如何开发”吧!一 背景项目新增监控系统,对各个系统进行监控接口调用情况,初...
    99+
    2023-06-30
  • Springboot插件怎么开发
    本篇内容主要讲解“Springboot插件怎么开发”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Springboot插件怎么开发”吧!一 背景项目新增监控系统,对各个系统进行监控接口调用情况,初...
    99+
    2023-07-06
  • Android基础开发之手势识别
    由于精确度等原因,手势识别在android中用的并不多,不过这并不妨碍我们来玩玩这个神奇的玩意。 在android中要使用手势,先得建立手势库,建立手势库非常简单,新建一个an...
    99+
    2022-06-06
    手势识别 手势 Android
  • Java Maven高级之插件开发详解
    目录前言创建自定义插件总结前言 终于来到了Maven的插件开发,其实Maven的插件并没有想象的那么难,刚开始讲Maven基础的时候就演示了一下JDK是如何打包的,Maven打包只是...
    99+
    2022-11-12
  • PyCharm插件开发实践之PyGetterAndSetter详解
    背景需求 在面向对象的设计中,典型如Java语言,为了控制对象属性的修改入口,我们常用的做法是把属性设置为private,然后通过getter和setter方法访问、修改该属性。 但...
    99+
    2022-11-12
  • Maven3.x 插件开发入门
      1、创建插件项目:(项目原型选择插件类型)    2、Artifact Id 以xxx-maven-plugin命名,如:gr-maven-plugin,下面Version的内容无所谓。    3、创建完毕之后的结构是这样:    4、...
    99+
    2023-01-31
    插件 入门
  • Flutter插件开发-(进阶篇)
    一、概述 Flutter也有自己的Dart Packages仓库。插件的开发和复用能够提高开发效率,降低工程的耦合度,像网络请求(http)、用户授权(permission_handler)等客户端开发常用的功能模块,我们只需要引入对应插件...
    99+
    2023-09-03
    android flutter android studio
  • Python搭建插件式框架(基于组件开发
    Python搭建插件式框架(基于组件开发) 概念 基于组件的开发(Component-Based Development,简称CBD)是一种软件开发范型。它是现今软件复用理论实用化的研究热点,在组件对象模型的支持下,通过复用已有...
    99+
    2023-01-31
    组件 插件 框架
  • umi插件开发仿dumi项目实现基础路由解析
    目录实现过程添加路由加载插件modifyRoutes解析生成路由getConventionRoutes访问运行实现过程 umi默认约定在/src/pages添加的(j|t)sx文件...
    99+
    2023-01-28
    umi插件仿dumi路由解析 umi i路由解析
  • Springboot插件开发实战分享
    目录一 背景二 监控日志插件开发1 新建aop切面执行类MonitorLogInterceptor三 总结一 背景 项目新增监控系统,对各个系统进行监控接口调用情况,初期的时候是在各...
    99+
    2022-11-13
  • 小程序插件如何开发
    本文小编为大家详细介绍“小程序插件如何开发”,内容详细,步骤清晰,细节处理妥当,希望这篇“小程序插件如何开发”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。  插件是对一组 js 接口或自定义组件的封装,用于提供给...
    99+
    2023-06-26
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作