WordPress 插件开发

什么是 WordPress 插件 ?

插件( Plugins )是如何与 WordPress 交互的

WordPress 为插件提供了多种丰富的 APIs。每一种 API( 应用程序接口 )使插件和 WordPress 以不同的方式交互。下面是 WordPress 提供的主要 APIs 以及他们的功能列表:

插件: 给插件提供一系列的钩子( hooks )来使用 WordPress 的相关部分。WordPress 包含两种不同类型的钩子: 动作( Actions )和过滤器( Filters )。动作让你可以在运行时的特定时刻触发自定义的插件代码。例如,可以在用户在 WordPress 中注册了一个账户后触发一个自定义函数。 过滤器用来修改在数据库中添加或获取的数据。

小工具( Widgets ): 在你的插件中创建和管理小工具。Widgets 在 Appearance -> Widgets 下面,并可以在你的模板中任何注册过的 sidebar 中添加。这个 API 允许在 sidebar 里面添加一个 widget 的多个实例。

短代码( Shortcode ):为你的插件提供短代码支持。短代码是一个可以让你通过类似这样[shortcode]的方法调用一个 PHP 函数的钩子。

HTTP: 从你的插件发送 HTTP 请求。这个 API 可以从一个外部的 URL 获取或者提交内容。目前你有5种发送 HTTP 请求的不同方法。这个 API 在每个方法执行前使过程标准化。这个 API 会基于你的服务器的设置使用合适的方法来发送请求。

设置( Settings ): 在你的插件中插入设置部分。使用设置 API 的主要好处就是安全。所有的设置数据都是检查过的,所以当你保存插件设置时不用担心跨站虚假请求攻击( cross site request forgery, CSRF) 和跨站脚本( cross site scripting XSS )攻击。

选项( Options ): 在你的插件中保存和获取选项。这个 API 允许创建新选项,更新现有选项,删除选项以及可选的控制板( Dashboard )定义。

小工具( Widgets ): 创建控制板小工具。小工具自动出现在 WordPress 的后台控制板中,并且包含标准的自定义操作,包括最小化、拖拽和隐藏。

重写( Rewrite ): 在插件中创建自定义的重写规则。这个 API 让你添加静态链接-点( /custom-page/),结构标签( %postname% ),和附加的 feed 链接( /feed/json/ )。

临时选项( Transients ): 在你的插件中创建临时选项( 缓存数据 )。这个 API 类似于 选项( Options ) API,只不过所有的选项都有过期时间。

数据库( database ): 可以访问 WordPress 数据库。可以再你的插件中增删改查数据库记录。

如何编写

i. 添加插件

wp-content/plugins/basicform/index.php

<?php
/**
 * @package Basic_Form
 * @version 1.0.0
 */
/*
Plugin Name: Basic_Form
Plugin URI: https://javascript.net.cn
Description: 
Author: 这是一个基础表单插件。
Version: 1.0.0
Author URI: https://javascript.net.cn
*/

function test() {
	
}

ii. 在左侧菜单“设置” 的子菜单中添加插件

//将插件在左侧菜单中显示
function register_left_my_menu()
{
  add_options_page("Basic_Form设置页面", "Basic_Form设置2", 8, __FILE__, "basic_form");
}

//插件内容
function basic_form()
{
  echo '这里是basic_form插件的页面内容,可以添加表单设置。';
}

//在 admin_menu 勾子中添加动作 basic_form
if (is_admin()) {
  add_action("admin_menu", "register_left_my_menu");
}

iii. 插件安装和卸载钩子

在插件安装和卸载的时候,往往需要执行一些操作,比如增删改一些数据库,这是就需要 register_activation_hook 和 register_deactivation_hook。

register_activation_hook(__FILE__, 'tinyms_init');

function tinyms_init(){
    global $wpdb;
    $wpdb->query("CREATE TABLE if not exists  
        (`id` bigint(20) NOT NULL AUTO_INCREMENT,
        `name` varchar(255) DEFAULT NULL,
        `url` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`))");
}

现在,只要激活插件,上面的表便创建好了。当插件取消激活的时候,同样可以做一些清理工作。

同样可以使用面向对象的方法写:

//方法都写成静态函数
class MyPlugin {
  static function install() {
     // do not generate any output here
  }
  static function uninstall() {
     // do not generate any output here
  }
}
//类名,方法名
register_activation_hook( __FILE__, array('MyPlugin', 'install') );
register_deactivation_hook(__FILE__,array('MyPlugin','uninstall'));
收藏
评论
打赏
WordPress 主题开发
Wordpress 数据库表结构
2024-05-04
WordPress 主题开发
WordPress 添加文章浏览次数
2024-05-04
飞翔的鱼丸
39401 阅读
82 发布
2 收藏
动态
FishV 主题 v1.21.0 发布
LandV 企业主题 v2.8.0 发布
MirageV 主题 v2.6.4 发布
FishV 主题 v1.14 发布
MirageV 主题 v2.5 正式发布
BotV 插件 v1.7.0 发布
LandV 企业主题 v2.6.0 发布
MirageV 主题 v2.6.0 发布
生成中...
真诚赞赏,手留余香
登录
注册
重置密码