Viele Entwickler möchten ihre WordPress-Kenntnisse in tatsächliche Einnahmen umwandeln, und die Entwicklung sowie Veröffentlichung eigener Plugins ist dafür ein idealer Weg. Dadurch können Sie nicht nur Ihren Code Tausenden von Nutzern zur Verfügung stellen, sondern auch einen dauerhaften Verdienst erzielen. Allerdings erfordert die Erstellung eines Plugins, das den offiziellen WordPress-Standards entspricht, vollständig funktionsfähig ist und verkauft werden kann, systematisches Wissen und praktische Erfahrung. Dieser Artikel bietet Ihnen eine klare Anleitung für den gesamten Prozess – von der Einrichtung der Entwicklungsumgebung über die eigentliche Programmierung bis hin zur endgültigen Veröffentlichung des Plugins.
Vorbereitungsarbeiten und Aufbau der Entwicklungsumgebung
Bevor man die erste Zeile Code schreibt, ist es von entscheidender Bedeutung, eine effiziente und standardisierte Entwicklungsumgebung einzurichten. Dies verbessert nicht nur die Entwicklungsgeschwindigkeit, sondern sorgt auch für eine höhere Qualität des Codes.
Erstellen Sie eine lokale Entwicklungsumgebung.
Die am meisten empfohlene Methode ist es, eine WordPress-Umgebung auf Ihrem lokalen Computer einzurichten. Sie können integrierte Tools wie XAMPP, MAMP, Local by Flywheel oder Laragon verwenden – diese ermöglichen die schnelle Installation von Apache, MySQL und PHP. Stellen Sie sicher, dass Ihre PHP-Version mit der in den meisten Hosting-Umgebungen verwendeten Version übereinstimmt (in der Regel mindestens PHP 7.4) und aktivieren Sie den WordPress-Debugging-Modus. Dies erleichtert das Erkennen von Fehlern während der Entwicklungsphase.
Empfohlene Lektüre Vom Nullpunkt zum Erfolg: Ein autoritatives Handbuch und Praktikum zur Entwicklung von WordPress-Plugins。
„In“ wp-config.php In der Datei sollten die folgenden Konstanten festgelegt werden, um die Debugging-Funktionen zu aktivieren:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true ); // 将错误记录到 /wp-content/debug.log
define( 'WP_DEBUG_DISPLAY', false ); // 不在页面上显示错误 Die grundlegende Struktur eines Planungsteils („Planning Plugin“)
Erstellen Sie einen separaten Ordner für Ihr Plugin. Angenommen, unser Plugin heißt “My First Plugin”, dann könnte der Ordnername lauten: my-first-pluginIm Plugin-Verzeichnis müssen mindestens die folgenden Kerndateien vorhanden sein:
1. 主文件:通常以插件名命名,如 my-first-plugin.phpDies ist der einzige Einstiegspunkt zum Plugin und enthält die Kommentare zur Kopfzeile des Plugins.
2. 主类文件:如 class-my-first-plugin.phpDient zur Organisation der Hauptfunktionalitäten und Logik der Plugins.
3. assets Ordner: Zum Speichern von JavaScript-, CSS- und Bildressourcen.
4. includes Ordner: Zum Speichern weiterer Hilfsklasse- oder Funktionen-Dateien.
5. languages Ordner: Zum Speichern von internationalisierten Übersetzungsdateien (.po/.mo).
Schreiben Sie Ihr erstes Plugin.
Jetzt erstellen wir den „Rahmen“ des Plugins und implementieren eine grundlegende Funktion.
Definition des Hauptdateien-Plugins
Der Lebenszyklus eines Plugins beginnt mit seiner Hauptdatei. In dieser Hauptdatei… my-first-plugin.php Am Anfang muss der Plugin-Header gemäß den WordPress-Vorgaben geschrieben werden – dies ist entscheidend für die Erkennung des Plugins durch WordPress.
Empfohlene Lektüre Von Grund auf: Eine vollständige Anleitung zur Entwicklung von WordPress-Plugins und ein Austausch über Best Practices。
<?php
/**
* Plugin Name: My First Plugin
* Plugin URI: https://yourwebsite.com/my-first-plugin
* Description: 一个用于演示的入门级 WordPress 插件,用于在文章末尾添加自定义内容。
* Version: 1.0.0
* Author: Your Name
* Author URI: https://yourwebsite.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
* Domain Path: /languages
*/ Implementieren Sie eine Kernfunktionsklasse.
Eine gute Plugin-Architektur verwendet in der Regel objektorientierte Programmierung (OOP). Wir erstellen eine Hauptklasse, um alle Funktionen zu kapseln, um Konflikte bei den Funktionsnamen zu vermeiden.
Zuerst erstellen Sie die Datei. class-my-first-plugin.php:
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit; // 防止直接访问
}
class My_First_Plugin {
/**
* 构造方法,初始化钩子
*/
public function __construct() {
// 在文章内容末尾添加自定义文本
add_filter( 'the_content', array( $this, 'append_custom_content' ) );
// 在管理后台添加一个设置菜单
add_action( 'admin_menu', array( $this, 'add_admin_menu' ) );
}
/**
* 在文章内容末尾添加内容
*
* @param string $content 原始文章内容。
* @return string 修改后的文章内容。
*/
public function append_custom_content( $content ) {
if ( is_single() && is_main_query() ) {
$custom_text = get_option( 'mfp_custom_text', '感谢阅读!欢迎关注。' );
$content .= '<div class="my-custom-content"><p>' . esc_html( $custom_text ) . '</p></div>';
}
return $content;
}
/**
* 在 WordPress 后台添加一个设置菜单项
*/
public function add_admin_menu() {
add_options_page(
'My First Plugin 设置', // 页面标题
'我的第一个插件', // 菜单标题
'manage_options', // 权限
'my-first-plugin', // 菜单 slug
array( $this, 'render_settings_page' ) // 回调函数
);
}
/**
* 渲染设置页面的 HTML
*/
public function render_settings_page() {
?>
<div class="wrap">
<h1>„My First Plugin“-Einstellungen</h1>
<form action="/de/options.php/" method="post" data-trp-original-action="options.php">
<?php
settings_fields( 'mfp_settings_group' );
do_settings_sections( 'my-first-plugin' );
submit_button();
?>
<input type="hidden" name="trp-form-language" value="de"/></form>
</div>
<?php
}
} Anschließend, im Hauptdatei… my-first-plugin.php Nach den Kopfkommentaren fügen Sie die Klasse ein und instanzieren Sie sie:
// 引入主类文件
require_once plugin_dir_path( __FILE__ ) . 'class-my-first-plugin.php';
// 初始化插件
function run_my_first_plugin() {
new My_First_Plugin();
}
run_my_first_plugin(); Erweiterte Funktionen der Plugins sowie verbesserte Sicherheit
Ein qualitativ hochwertiger Plugin muss nicht nur die vorgesehenen Funktionen erfüllen, sondern auch Aspekte wie Sicherheit und Konfigurierbarkeit berücksichtigen.
Hinzufügen von Einstellungsoptionen und Datenvalidierung
Damit Benutzer den hinzugefügten Text selbst definieren können, müssen wir echte Einstellungsoptionen erstellen. Dafür ist die Nutzung der WordPress-Settings-API erforderlich.
„In“ My_First_Plugin In der Konstruktormethode der Klasse fügen Sie einen Hook für die Initialisierungs-Einstellungen hinzu:
Empfohlene Lektüre Kompletter Leitfaden für die Entwicklung von WordPress-Plugins: Ein praktischer Tutorial von Grundlagen bis zur Veröffentlichung im Live-Betrieb。
add_action( 'admin_init', array( this, 'register_settings' ) ); Fügen Sie dann in der Klasse die Methode zum Registrieren der Einstellungen hinzu:
public function register_settings() {
// 注册一个设置项 `mfp_custom_text` 到 `mfp_settings_group`
register_setting(
'mfp_settings_group', // 选项组
'mfp_custom_text', // 选项名
array(
'type' => 'string',
'sanitize_callback' => 'sanitize_text_field', // 数据净化,防止 XSS
'default' => '感谢阅读!欢迎关注。',
)
);
// 添加一个设置区域
add_settings_section(
'mfp_main_section',
'主要设置',
null, // 回调函数,可为空
'my-first-plugin' // 页面 slug
);
// 在设置区域中添加字段
add_settings_field(
'mfp_custom_text_field',
'自定义追加文本',
array( $this, 'render_text_field' ), // 渲染字段的回调
'my-first-plugin',
'mfp_main_section'
);
}
public function render_text_field() {
$value = get_option( 'mfp_custom_text' );
echo '<input type="text" name="mfp_custom_text" value="' . esc_attr( $value ) . '" class="regular-text">'echo '<p class="description">Dieser Text wird am Ende jedes Artikels angezeigt.</p>';
} Internationalisierungsfunktionen implementieren
Damit Ihr Plugin von Nutzern auf der ganzen Welt verwendet werden kann, ist die Internationalisierung (i18n) unerlässlich. Wir haben dies bereits in den Kommentaren am Anfang des Plugins definiert. Text Domain und Domain PathJetzt müssen alle für die Benutzer bestimmten Zeichenketten mit einer Übersetzungsfunktion umhüllt werden.
Beispielsweise, wenn Sie die Render-Einstellungenseite bearbeiten, sollten Sie die fest eingebetteten Zeichenketten durch folgende ersetzen:
<h1><?php esc_html_e( 'My First Plugin 设置', 'my-first-plugin' ); ?></h1> „In“ append_custom_content Wenn der Standardtext in einer Methode abgerufen wird:
$custom_text = get_option( 'mfp_custom_text', __( '感谢阅读!欢迎关注。', 'my-first-plugin' ) ); Schließlich müssen Sie Tools wie Poedit verwenden, um die Übersetzungsfunktionen im Code zu scannen und die entsprechenden Übersetzungen zu generieren. .pot Template-Dateien, und auf deren Grundlage werden verschiedene Sprachversionen erstellt (z. B. zh_CN.po und .moDie Übersetzungsdatei für „)“ soll in die entsprechende Ordnerstruktur eingefügt werden. /languages Katalog.
Testen, Verpacken und Veröffentlichen
Vor der Übermittlung des Plugins an die Nutzer sind ausführliche Tests sowie eine professionelle Verpackung die letzten, entscheidenden Schritte.
Durchführen einer umfassenden Funktionsprüfung
Die Tests sollten die folgenden Aspekte umfassen:
1. 功能测试:确保“追加文本”功能在单篇文章页面正常工作,设置页面能保存和读取值。
2. 兼容性测试:在不同的 WordPress 版本(尤其是上一个主要版本)、PHP 版本以及几款热门主题下测试插件。
3. 安全测试:检查所有用户输入(如设置选项)是否都经过了像 esc_html、sanitize_text_field Eine solche Reinigungs- oder Entschlüsselungsverarbeitung soll sicherstellen, dass nicht-administrative Benutzer nicht auf die Einstellungsseiten zugreifen können.
4. 性能检查:确保插件没有在每次页面加载时引入不必要的数据库查询或重型脚本。
Bereit zum Veröffentlichen auf WordPress.org.
Wenn Sie sich entscheiden, das Plugin kostenlos im offiziellen WordPress-Plugin-Verzeichnis zu veröffentlichen, müssen Sie Folgendes tun:
1. 在 WordPress.org 上申请一个 SVN 仓库。
2. 为你的插件创建一个专业的 readme.txt Datei: Diese Datei verwendet eine spezifische Formatierung (ähnlich Markdown) und dient dazu, auf der Seite des Plugins-Verzeichnisses Beschreibungen, Installationsanleitungen, Screenshots, Aktualisierungsprotokolle usw. anzuzeigen. Dies ist ein wichtiger Bestandteil der Plugin-Marketing-Strategie.
3. 确保代码符合 WordPress 编码标准。你可以使用 PHP_CodeSniffer 与 WordPress 标准规则来自动检查。
4. 使用 SVN 客户端将你的插件文件夹(包含所有文件)提交到仓库的 /trunk Verzeichnis. Kennzeichnen Sie den Code der stabilen Version mit Tags. /tags/1.0.0 Katalog.
Vorbereitung auf die kommerzielle Veröffentlichung
Falls Sie planen, Waren kommerziell zu verkaufen – beispielsweise über Ihre eigene Website oder über einen Markt wie CodeCanyon:
1. 添加许可证管理:实现一个系统来验证用户的购买凭证,可能通过 API 连接到你的销售平台。
2. 构建升级机制:为插件加入更新检查功能,当你在自己的服务器发布新版本时,能向已安装的用户推送更新通知。这通常通过向 WordPress 的更新系统注入自定义数据来实现。
3. 完善文档:编写清晰的使用文档、FAQ 和故障排除指南。
4. 选择支付和分发方案:集成 Stripe、PayPal 等支付网关,或使用 Easy Digital Downloads、WooCommerce 等成熟的电商插件来搭建你自己的销售门户。
Zusammenfassungen
Die Entwicklung von WordPress-Plugins ist ein systematischer Prozess, der von der Idee über die Umsetzung bis hin zur Marktreife führt. Er beginnt mit einer klaren Definition der Anforderungen und einer standardisierten Entwicklungsumgebung. Der Schlüssel liegt darin, die Codierungsrichtlinien von WordPress einzuhalten, die umfangreiche Hook-APIs zu nutzen sowie die Prinzipien der Sicherheit und Internationalisierung konsequent umzusetzen. Durch die objektorientierte Organisation des Codes wird eine solide Grundlage für die Wartbarkeit des Plugins geschaffen. Die abschließenden Phasen der Tests, des Paketierens und der Veröffentlichung bilden die Verbindung zwischen Entwicklern und Nutzern weltweit. Egal, ob das Plugin als Open-Source-Projekt freigegeben oder kommerziell vertrieben wird, eine professionelle Präsentation ist von großer Bedeutung. Indem Sie die Schritte dieser Anleitung befolgen, werden Sie in der Lage sein, ein WordPress-Plugin zu entwickeln, das strukturiert, sicher, zuverlässig und den Veröffentlichungsstandards entspricht – und somit einen soliden Schritt in Richtung technischer Einnahmen machen.
FAQ Häufig gestellte Fragen
Muss man zur Entwicklung von WordPress-Plugins objektorientierte Programmierung verwenden?
Es ist nicht zwingend erforderlich, aber sehr empfehlenswert. Die Verwendung objektorientierter Programmierung (OOP) und Klassen zur Organisation des Codes ermöglicht es, die Funktionen deines Plugins effektiv in separaten Namensräumen zu verpacken, wodurch das Risiko von Konflikten mit Funktionsnamen von Themes oder anderen Plugins erheblich reduziert wird. Zudem wird die Struktur des Codes klarer und der Code einfacher zu warten sowie zu erweitern.
In den Kommentaren am Anfang des Plugins, was bedeuten „Text Domain“ und „Domain Path“?
Text Domain(Das Textfeld) enthält einen eindeutigen Identifier, der WordPress mitteilt, welches “Übersetzungs-Paket” Ihr Plugin verwendet. Dieser Identifier entspricht in der Regel dem Namen des Plugins-Ordners oder dem Namen der Hauptdatei des Plugins.Domain Path Damit wird der Pfad relativ zum Root-Verzeichnis des Plugins definiert. WordPress wird in diesem Pfad nach der entsprechenden Sprachdatei suchen. .mo Translate the file. For example,Domain Path: /languages Das bedeutet, dass die Übersetzungsdateien im Plugin gespeichert sind. /languages Im Ordner.
Wie kann ich sicherstellen, dass mein Plugin die Geschwindigkeit der Website des Nutzers nicht verlangsamt?
Die Optimierung der Leistung von Plugins ist entscheidend. Vermeiden Sie es, bei jedem Seitenladen komplexe Datenbankabfragen auszuführen, und nutzen Sie so weit wie möglich die Transients-API, um Daten, die gespeichert werden können, zu verwalten. Bei Frontend-JavaScript- und CSS-Dateien sollten diese nur auf den Seiten geladen werden, auf denen sie tatsächlich benötigt werden – und zwar unter Verwendung von Bedingungen (z. B. durch Abfragen). is_admin() oder is_single()) zum Laden verwenden und anschließend anwenden. wp_enqueue_script() und wp_enqueue_style() Die Funktionen werden mit den korrekten Abhängigkeiten und Versionsnummern eingeführt. Regelmäßige Code-Reviews werden durchgeführt, um überflüssige Operationen zu entfernen.
Sollte ich das Plugin auf WordPress.org veröffentlichen oder es selbst verkaufen?
Es hängt von deinen Zielen ab. Die Veröffentlichung auf WordPress.org ist kostenlos und ermöglicht es dir, eine große Anzahl von Nutzern zu erreichen, einen guten Ruf aufzubauen sowie durch Spenden oder die Weiterleitung von Nutzern zu deinen professionellen Dienstleistungen Geld zu verdienen. Allerdings müssen die verwendeten Plugins der GPL-Lizenz folgen, und es gibt bestimmte Überprüfungsstandards. Wenn du deine Plugins selbst verkaufst (mit einer kommerziellen Lizenz), hast du die volle Kontrolle über Preise, Marketingmaßnahmen und Supportkanäle. Du kannst auch komplexere und leistungsstärkere Plugins entwickeln – allerdings musst du selbst für die Abwicklung von Zahlungen, Lizenzüberprüfungen, Update-Verteilungen und Kundensupport sorgen.
Wie kann man sicher mit Änderungen in der Datenbankstruktur umgehen, wenn Benutzer Plugins aktualisieren?
Das ist ein anspruchsvolles, aber häufiges Problem. Wenn eine neue Version Ihrer Erweiterung eine Änderung an der Datenbank erfordert – beispielsweise die Erstellung neuer Tabellen oder das Hinzufügen von Feldern – darf diese Änderung auf keinen Fall bei jedem Seitenladen ausgeführt werden. CREATE TABLE Die beste Praxis besteht darin, die Datenbankversion als WordPress-Option zu speichern (z. B. <code>yourplugin_db_version</code>Bei der Initialisierung des Plugins wird überprüft, ob die aktuelle Datenbankversion mit der gespeicherten Version übereinstimmt. Falls nicht, wird eine spezielle Upgrade-Funktion aufgerufen, um die notwendigen SQL-Änderungen durchzuführen, und anschließend die gespeicherte Versionnummer aktualisiert. Dadurch wird sichergestellt, dass die Aktualisierung nur einmal durchgeführt wird.
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.
- Was ist ein WordPress-Theme? Ein vollständiger Leitfaden von der Einführung bis zur Meisterschaft
- 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