WordPress主题开发:https://cloud.tencent.com/developer/article/2218895
WordPress插件开发手册:https://developer.wordpress.org/plugins/
每次WordPress 网页请求,都会依次执行各种插件的主文件(PluginName.php), 然后才会执行主题的function.php 文件。执行时注册的各种钩子,将会在指定事件发生时触发执行。
WordPress 钩子可以让我们在特定的时机介入 WordPress 的代码执行流程,不需要编辑任何核心文件就可以改变 WordPress 的行为。
WordPress 中有两种类型的钩子,Action 和 Filter,Action 可以让我们添加或修改 WordPress 功能,而 Filter 可以让我们修改用户提交的或展示给用户的内容。
除了在 WordPress插件中使用,钩子也被广泛应用于 WordPress 核心的许多功能中,一些钩子只是在 WordPress 埋下了一些占位符,以便我们开发的时候使用,这就是 WordPress 如此灵活的原因。
只有被激活的插件,才会在每次网页请求时被调用执行。
创建插件时需要的 3 个基础钩子是 register_activation_hook(),register_deactivation_hook() 和 register_uninstall_hook()。
在Plugins目录下,创建一个目录,目录里面放一个同名的PHP文件,通过注释添加如下描述:
<?php
/**
Plugin Name: Document-Assit
Plugin URI: https://nicen.cn
Description: 主题辅助插件
Version: 3.2.6
Update URI: https://wordpress.org/plugins/wp-optimize/
Author: 友人a丶
Author URI: https://nicen.cn
Text Domain: Document-Assit
License: GPLv2 or later
*/
一个简单的插件就算完成了,可直接按照上方模板定义自己的插件。
经过实际测试,插件先于主题加载,主题在插件加载完毕后开始加载。
插件安装时代码运行的上下文是在一个函数里
代码报错信息
<?php
function plugin_sandbox_scrape( $plugin ) {
if ( ! defined( 'WP_SANDBOX_SCRAPING' ) ) {
define( 'WP_SANDBOX_SCRAPING', true );
}
wp_register_plugin_realpath( WP_PLUGIN_DIR . '/' . $plugin );
include_once WP_PLUGIN_DIR . '/' . $plugin;
}
由此得知,插件内的代码不能简单的认为在全局作用域;
插件安装时,会完整的运行插件所有的代码,register_activation_hook钩子只会在安装是触发
官方文档:https://developer.wordpress.org/cli/commands/
# 安装下载wp-cli
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar