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'));
收藏 0
评论
WordPress 基础
Wordpress 数据库表结构
2023-05-04 12:12:47
WordPress 主题开发
WordPress 添加文章浏览次数
2023-05-04 15:11:02
生成中...
登录
注册
重置密码