WordPress 插件开发
像素鱼丸
2024-05-04
636

什么是 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 添加文章浏览次数
下一篇

发表评论

注册不是必须的

像素鱼丸
159 文章
2 评论
4 喜欢
最新文章

StarFish 配置框架

一个轻量级的 WordPress 选项框架插件,通过配置化的方式,快速为 WordPress 主题或插件生成后台设置页面。 ✨ 特性 🎯 配置驱动 UI:只需定义数组配置,自动生成完整的表单界面 📱 多页面架构:支持多个独立的设置页面 🎨 丰富的字段类型:包含 15+ 种常用字段类型 🔗 字段依赖系统:实现字段间的联动效果 ✅ 数据验证与清理:自动进行安全清理,防止 XSS 攻击 🚀 零依赖:使用 […]

什么是幽灵按钮

“幽灵按钮”(Ghost Button)是一种常见的网页与移动应用 UI 设计模式,指背景透明(或半透明)、仅通过边框(border)和文字(text)定义的按钮,视觉上“若隐若现”,仿佛“幽灵”一般——因此得名。 核心特征: 无填充色(transparent background) 背景完全透明(或与父容器同色),不遮挡背后内容。 清晰的边框(通常 1–2px 实线) 如 border: 2px […]

付费资源下载时间限制有什么用?

这个功能确实挺常见的,它背后的逻辑其实不是“防君子”,而是“防小人”和“控成本”。有没有必要做,主要取决于你平台上的资源类型和你的运营阶段。 我们可以从三个角度来看看这个“10天有效期”到底有什么用: 增加倒卖和二次传播的成本(防黄牛) 这是最核心的意义。如果你的资源是虚拟商品(比如教程、源码、素材包),用户付一次钱理论上可以无限复制。 如果没有有效期: 一个人买了,转手挂到闲鱼或者别的群里卖,你 […]

测试产品

生成中...
扫描二维码
扫描二维码
确认购买

您确定要购买此资源吗?

微信扫码支付

请使用微信扫描二维码完成支付

订单号:

等待支付...