Vorbereitungsarbeiten und Umgebungseinstellungen
在开始编写代码之前,你需要一个合适的开发环境。这包括一个本地的 WordPress 安装和一个代码编辑器。推荐使用 XAMPP、MAMP、Local by Flywheel 或 Laragon 等工具来快速搭建本地服务器环境。确保你的环境运行着较新版本的 PHP(建议 7.4 及以上)和 MySQL/MariaDB。
接下来,你需要了解 WordPress 插件的基本结构。一个插件最核心的文件是一个主 PHP 文件,其文件名和目录名可以自定义,但必须包含一个特定的插件头注释,用于向 WordPress 声明你的插件。你可以在 WordPress 安装目录的 wp-content/plugins 文件夹下创建一个新文件夹,例如 my-first-plugin。
在这个文件夹内,创建你的主插件文件,例如命名为 my-first-plugin.php。这个文件的开头必须包含标准的插件信息注释。
Empfohlene Lektüre Einführung in die Entwicklung von WordPress-Plugins: Erstellen Sie Ihre erste benutzerdefinierte Funktionserweiterung von Grund auf.。
Erstellen Sie Ihre erste Plugin-Datei.
现在,让我们动手创建插件的基础骨架。在你的插件目录中,打开主 PHP 文件,并写入以下标准的插件头信息。
<?php
/**
* Plugin Name: 我的第一个插件
* Plugin URI: https://example.com/my-first-plugin
* Description: 这是一个用于学习的 WordPress 插件示例。
* Version: 1.0.0
* Author: 你的名字
* Author URI: https://example.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
* Domain Path: /languages
*/ 这段注释是 WordPress 识别插件的关键。其中,Plugin Name 是必填项,其他均为可选。保存文件后,你可以在 WordPress 后台的“插件”页面中看到这个新插件,并可以激活它。目前它还没有任何功能。
Fügen Sie dem Plugin eine einfache Funktion hinzu.
一个最简单的功能是在网站的管理后台添加一个自定义的管理菜单。我们将使用 add_action Die Funktion wird montiert. admin_menu Dieser Action-Hook ist aktiviert.
在主插件文件中,注释块之后,添加以下代码:
// 在管理菜单中添加一个顶级菜单
function mfp_add_admin_menu() {
add_menu_page(
'我的第一个插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 权限要求
'my-first-plugin', // 菜单 slug
'mfp_settings_page', // 回调函数,用于输出页面内容
'dashicons-admin-generic', // 图标(可选)
6 // 菜单位置(可选)
);
}
add_action('admin_menu', 'mfp_add_admin_menu');
// 定义设置页面的回调函数
function mfp_settings_page() {
?>
<div class="wrap">
<h1><?php echo esc_html(get_admin_page_title()); ? <?php echo esc_html(get_admin_page_title(); ?</h1>
<p>Willkommen auf der Einstellungsseite meines ersten Plugins!</p>
<form method="post" action="/de/options.php/" data-trp-original-action="options.php">
<?php
// 后续可以在这里添加设置字段
?>
<p class="submit">
<input type="submit" name="submit" id="submit" class="button button-primary" value="Änderungen speichern">
</p>
<input type="hidden" name="trp-form-language" value="de"/></form>
</div>
<?php
} 这段代码创建了一个新的顶级菜单“我的插件”,点击后会进入一个简单的设置页面。这里使用了 add_menu_page 函数来注册菜单,并定义了一个回调函数 mfp_settings_page 来渲染页面内容。
Empfohlene Lektüre Einführung in die Entwicklung von WordPress-Plugins: Erstellen Sie Ihr erstes funktionales Plugin von Grund auf。
使用钩子与过滤器扩展功能
WordPress 的核心强大之处在于其插件架构,这主要通过动作钩子和过滤器钩子实现。动作钩子允许你在特定时刻执行自定义代码,而过滤器钩子允许你修改数据。
利用动作钩子添加页面脚注
假设我们想在网站的所有文章末尾自动添加一段自定义文本。这可以通过挂载到 the_content 这个过滤器钩子来实现。注意,虽然名字是“过滤器”,但 the_content 通常用于修改文章内容输出。
// 在文章内容末尾添加自定义文本
function mfp_append_text_to_content($content) {
// 确保只在主循环的单篇文章页面添加
if (is_single() && in_the_loop() && is_main_query()) {
$custom_text = '<p><em>本文由“我的第一个插件”为您呈现。</em></p>'.
$content . = $custom_text.
}
return $content.
}
add_filter('the_content', 'mfp_append_text_to_content'); 这个函数 mfp_append_text_to_content 接收原始的文章内容 $content,在检查了上下文条件(确保是单独的文章页面)后,将一段自定义文本附加到内容末尾,最后返回修改后的内容。通过 add_filter 将其注册到 the_content Haken.
创建可配置的插件选项
一个实用的插件通常需要一些可由用户配置的选项。WordPress 提供了设置 API 来安全地处理和管理选项。我们将为之前的设置页面添加一个简单的文本字段。
首先,我们需要注册一个设置,并将其添加到已有的菜单页面中。
// 初始化插件设置
function mfp_settings_init() {
// 注册一个新的设置到 “reading” 组(或自定义组)
register_setting('mfp_plugin_settings', 'mfp_custom_message');
// 在现有页面内添加一个设置区域
add_settings_section(
'mfp_section_id',
'自定义消息设置',
'mfp_section_callback',
'my-first-plugin'
);
// 向该区域添加一个字段
add_settings_field(
'mfp_field_id',
'页脚消息',
'mfp_field_callback',
'my-first-plugin',
'mfp_section_id'
);
}
add_action('admin_init', 'mfp_settings_init');
// 区域描述回调函数
function mfp_section_callback() {
echo '<p>在这里配置插件在文章末尾显示的消息。</p>';
}
// 字段输出回调函数
function mfp_field_callback() {
// 从数据库中获取已保存的选项值
$message = get_option('mfp_custom_message', '本文由“我的第一个插件”为您呈现。');
echo '<input type="text" name="mfp_custom_message" value="' . esc_attr($message) . '" class="regular-text">'echo '<p class="description">输入你想在每篇文章末尾显示的消息。</p>';
} 然后,需要修改之前定义的 mfp_settings_page 函数,在表单中输出设置字段。
Empfohlene Lektüre Vom Einstieg bis zur Meisterschaft: Ein umfassender Leitfaden und Praxis-Tutorial für die Entwicklung von WordPress-Plugins。
// 更新后的设置页面回调函数
function mfp_settings_page() {
?>
<div class="wrap">
<h1><?php echo esc_html(get_admin_page_title()); ? <?php echo esc_html(get_admin_page_title(); ?</h1>
<form method="post" action="/de/options.php/" data-trp-original-action="options.php">
<?php
// 输出设置字段、安全随机数和设置组
settings_fields('mfp_plugin_settings');
do_settings_sections('my-first-plugin');
submit_button();
?>
<input type="hidden" name="trp-form-language" value="de"/></form>
</div>
<?php
} 最后,更新之前附加文本的函数,使其使用可配置的选项。
function mfp_append_text_to_content($content) {
if (is_single() && in_the_loop() && is_main_query()) {
// 从选项中获取自定义消息,如果不存在则使用默认值
$custom_text = get_option('mfp_custom_message', '本文由“我的第一个插件”为您呈现。');
if (!empty($custom_text)) {
$content .= '<p><em>' . wp_kses_post($custom_text) . '</em></p>';
}
}
return $content.
} Plugin-Internationalisierung und Vorbereitung auf die Veröffentlichung
为了让插件能被全世界的用户使用,国际化是重要的一步。这涉及到使用文本域和翻译函数包装所有用户可见的字符串。
使用翻译函数包装文本
你需要将所有在插件中输出的字符串(如 echo 或 `` 返回的文本)用特定的翻译函数包裹。最常用的是 () 用于翻译并返回字符串,以及 esc_html__() 用于翻译并转义HTML。
修改之前的代码示例:
// 在管理菜单中添加一个顶级菜单(国际化版本)
function mfp_add_admin_menu() {
add_menu_page(
__('我的第一个插件设置', 'my-first-plugin'), // 页面标题
__('我的插件', 'my-first-plugin'), // 菜单标题
'manage_options',
'my-first-plugin',
'mfp_settings_page',
'dashicons-admin-generic',
6
);
}
add_action('admin_menu', 'mfp_add_admin_menu');
// 区域描述回调函数(国际化版本)
function mfp_section_callback() {
echo '<p>' . esc_html__('在这里配置插件在文章末尾显示的消息。', 'my-first-plugin') . '</p>';
} 同时,需要加载文本域。在插件主文件的注释块后,添加加载翻译文件的代码:
// 加载插件文本域
function mfp_load_textdomain() {
load_plugin_textdomain('my-first-plugin', false, dirname(plugin_basename(__FILE__)) . '/languages/');
}
add_action('plugins_loaded', 'mfp_load_textdomain'); 准备插件压缩包
在发布或分享插件之前,你需要创建一个干净的发布包。确保你的插件目录包含所有必要的文件,并排除像 .git 文件夹、日志文件或 IDE 配置文件等无关内容。通常,一个最小的插件发布包应包含:
1. 主插件 PHP 文件。
2. 一个可选的 readme.txt 文件,遵循 WordPress.org 的格式标准,用于在插件目录中展示。
3. 一个包含翻译文件的 /languages 文件夹(如果有的话)。
4. 其他必需的 JavaScript、CSS 或图片资源文件夹。
将整个插件文件夹压缩成 ZIP 文件,这个文件就可以通过 WordPress 后台的“上传插件”功能进行安装,或者提交到 WordPress 官方插件目录。
Zusammenfassungen
通过本篇指南,我们走完了 WordPress 插件开发的核心流程:从环境准备、创建带有标准插件头的主文件,到利用动作和过滤器钩子添加功能,再到使用设置 API 创建可配置的选项页面,最后介绍了国际化的基础知识。这为你构建更复杂、更实用的插件奠定了坚实的基础。记住,良好的代码结构、遵循 WordPress 编码标准以及深入理解其钩子系统,是成为一名优秀插件开发者的关键。
FAQ Häufig gestellte Fragen
开发 WordPress 插件需要什么编程基础?
你需要具备 PHP 编程的基础知识,因为 WordPress 核心及其插件主要是用 PHP 编写的。同时,对 HTML、CSS 和 JavaScript 有基本了解也会非常有帮助,特别是当你需要自定义管理界面或前端交互时。理解 WordPress 的基本概念,如文章、页面、分类法和钩子,也是必不可少的。
插件的主文件必须叫什么名字?
没有强制要求。主文件可以是任何有效的 PHP 文件名,但通常建议使用与插件目录名一致的名称,例如若目录名为 my-super-plugin,则主文件可以命名为 my-super-plugin.php。关键在于文件顶部的插件头注释,WordPress 通过注释中的 Plugin Name: 来识别插件。
Wie füre ich den Code meines Plugins zum Debuggen ein?
有多种方法可以调试插件。首先,确保在你的 wp-config.php Aktivieren Sie im File den Debugging-Modus für WordPress. WP_DEBUG Die Konstante ist auf true。这将在页面上显示 PHP 错误、警告和通知。此外,可以使用 error_log() 函数将调试信息写入服务器的错误日志,或者使用更高级的调试工具如 Query Monitor 插件,它可以提供数据库查询、钩子、PHP 错误等详细信息。
我开发的插件如何发布到 WordPress 官方目录?
要将插件发布到 WordPress.org 官方插件目录,你需要先在 WordPress.org 上注册一个账号,然后提交你的插件进行审查。你的插件代码必须遵循 GNU GPL 许可证,并且包含一个格式正确的 readme.txt 文件。审查团队会检查代码质量、安全性和是否符合目录指南。通过审查后,你就可以获得一个 SVN 仓库,用于管理和更新你的插件版本。
Was kommt als Nächstes, was kommt als Nächstes?
Erweiterte Lektüre und praktische Kenntnisse
Die folgenden Artikel stehen im Zusammenhang mit dem Thema dieses Artikels und eignen sich für eine vertiefte Lektüre. Oft ist es besser, mit dem Artikel zu beginnen, der Ihrem aktuellen Problem am nächsten kommt, und dann nach und nach die umliegenden Themen zu behandeln.
- Wie wählt und passt man ein perfektes WordPress-Theme für sich selbst aus?
- WordPress-Plugin-Entwicklungshandbuch: Von Null zu Eins – Erstellen Sie Ihr erstes benutzerdefinierte Plugin
- Wie man ein WordPress-Plugin-Entwickler wird: Ein umfassender Leitfaden von Grund auf
- Vom Nullpunkt zum Erfolg: Ein umfassender Leitfaden und praktische Tipps für das Erstellen professioneller Websites mit WordPress
- Komplettanleitung zur Entwicklung von WordPress-Plugins: Von der Grundlagenkenntnis bis zur Meisterschaft – Erstellen Sie professionelle Erweiterungen