Dodatki do WordPress są kluczowym elementem umożliwiającym rozszerzanie funkcjonalności tego systemu. Dzięki nim można dodawać do witryny nieograniczoną liczbę nowych funkcji, bez konieczności modyfikacji kodu źródłowego WordPress. Rozwoj dodatków jest realizowany zgodnie z określonymi zasadami i najlepszymi praktykami, aby zapewnić ich bezpieczeństwo, wydajność oraz łatwość obsługi. Standardowy dodatek musi zawierać co najmniej jedno główne plików, którego nazwa odpowiada nazwie samego dodatku. my-awesome-plugin.phpTen tekst rozpocznie się od podstawowych pojęć i pokieruje cię krok po kroku w świecie rozwoju dodatków (pluginów).
Zrozumienie podstawowych zasad działania pluginów
WordPress plugin to w istocie jeden lub kilka plików w formacie PHP, które są przechowywane w określonym miejscu w strukturze witryny. /wp-content/plugins/ W katalogu znajdują się dodatki (plugi), które interagują z core’em WordPressa za pomocą API oraz systemu hooków (hooks) dostępnych w tym frameworku.
Mechanizm działania systemu hooków
System “hooków” stanowi kluczową część rozwoju pluginów dla WordPress. Programiści mogą „przyczepić” swoje moduły do standardowego procesu działania WordPressa na dwa sposoby: za pomocą akcji (Actions) i filtrów (Filters). Akcje umożliwiają wykonywanie własnego kodu w określonych momencach, natomiast filtry pozwalają modyfikować dane przekazywane w trakcie tego procesu.
Polecamy lekturę. Rozwój pluginów dla WordPress – od początków do mistrzostwa: pokazujemy ci, jak stworzyć własną, unikalną funkcję.。
Na przykład, używając… add_action() Funkcja może zarejestrować „hooka akcji” (action hook). Gdy WordPress dotrze do tego punktu wykonywania, zostanie uruchomiona funkcja wywołana (callback function), którą ustawiłeś.
Standardowe informacje o nagłówku pliku wtyczki
Każdy plik PHP zawierający plugin musi zawierać standardzny blok komentarzy na początku pliku, który służy do podania metadanych pluginu do WordPress. Te informacje decydują o sposobie wyświetlania pluginu na stronie zarządzania pluginami w backendzie.
<?php
/**
* Plugin Name: 我的超级插件
* Plugin URI: https://www.example.com/my-super-plugin/
* Description: 这是一个用来演示插件开发基础的示例插件。
* Version: 1.0.0
* Author: 张三
* Author URI: https://www.example.com/
* License: GPL v2 or later
* Text Domain: my-super-plugin
*/ Wymagania dotyczące ładowania i aktywacji pluginów:
Gdy użytkownik aktywuje dodatek w panelu administracyjnym WordPressa, WordPress wykonywa kod zawarty w jego głównym pliku przy każdym otwarciu strony (pod warunkiem, że kod nie znajduje się w funkcjach ani nie jest chroniony warunkami). Dlatego zaleca się umieszczać cały kod realizujący funkcje w funkcjach lub klasach i wywoływać go za pomocą „hooków”, aby uniknąć wykonywania niepotrzebnego kodu w przypadku, gdy dodatek nie jest aktywny.
Stworzenie swojego pierwszego pluginu
Zacznijmy tworzyć prosty plugin, który będzie automatycznie dodawał informację o prawach autorskich na końcu każdego tekstu artykułu na stronie internetowej.
Tworzenie pliku z głównym pluginem
Najpierw… /wp-content/plugins/ Utworz kopię foldera w katalogu i nazwij ją… my-first-pluginA potem w tym folderze utwórz plik główny. my-first-plugin.phpDodaj również powyżej opisane standardowe informacje o nagłówku pliku.
Polecamy lekturę. Rozwój pluginów dla WordPress: Pełny przewodnik od poznania podstaw do osiągnięcia mistrzostwa w tworzeniu modułów z dużą możliwością personalizacji。
Użyj filtrów do modyfikacji treści artykułu.
Będziemy używać… the_content Filtrzy służą do modyfikacji wyświetlanych treści artykułów. Dodaj następujący kod do swojego głównego pliku:
Funkcja myfp_add_copyright_to_content($content) {
// Upewnij się, że jest wykonywana tylko w głównej pętli artykułu, a nie w panelu administracyjnym.
if (is_single() && !is_admin()) {
$copyright_text = ' <p>Tekst praw autorskich</p>';
}
}'<p><em>Prawa autorskie do tego artykułu należą do tej witryny. W przypadku jego przedrukowania należy podać źródło.</em></p>'if ( !defined( '$content' ) ) {
$content = $copyright_text;
}
return $content;
}
add_filter( 'the_content', 'myfp_add_copyright_to_content' ); myfp_add_copyright_to_content Funkcja przyjmuje jeden parametr. $contentTo oznacza, że treść artykułu jest dostępna poprzez funkcję realizującą warunkowe sprawdzanie. is_single()Upewnij się, że dodaje się to tylko na stronie pojednego artykułu. !is_admin() Wtedy tekst informujący o prawach autorskich nie będzie wyświetlany w edytorze w tle (w trybie offline).
Lokalizacja pluginów
Aby plugin obsługiwał kilka języków, konieczne jest przeprowadzenie procesu internationalizacji (i18n). Najpierw to zostało zrealizowane w nagłówku głównego pliku. Text Domain: my-first-pluginNastępnie, w momencie inicjalizacji wtyczki, są załadowane pliki językowe.
Zwykle używamy… plugins_loaded Aby bezpiecznie załadować tłumaczenie, należy użyć odpowiednich procedur. __() 或 _e() Można użyć funkcji takich jak `wrap` lub `enclose` do otoczenia wszystkich tekstów, które potrzebują tłumaczenia.
function myfp_load_textdomain() {
load_plugin_textdomain(
'my-first-plugin',
false,
dirname(plugin_basename(__FILE__)) . '/languages/'
);
}
add_action('plugins_loaded', 'myfp_load_textdomain'); Wysoki poziom rozwoju dodatków (plug-inów)
Gdy funkcje wtyczek stają się bardziej złożone, stosowanie podejścia obiektowego (OOP) oraz bardziej strukturalnych metod rozwoju zapewnia lepszą organizację kodu, zabezpieczenie przed wpływem zewnętrznych czynników („encapsulation”) oraz łatwość utrzymania oprogramowania.
Zastosowanie programowania obiektowego
Używanie klas do zamykania wszystkich funkcji pluginu jest rozsądnym rozwiązaniem. Dzięki temu unikniesz konfliktów nazw funkcji oraz uzyskasz jasną strukturę kodu.
Polecamy lekturę. Dokładny analiz: Od zera poznaj esencję i praktyczne aspekty rozwoju pluginów dla WordPress。
class My_Advanced_Plugin {
public function __construct() {
// 在构造函数中绑定所有钩子
add_action('wp_footer', array($this, 'add_footer_notice'));
add_filter('the_title', array($this, 'modify_post_title'));
}
public function add_footer_notice() {
echo '<p style="text-align:center;">Techniczna pomoc jest udostępniana przez My Advanced Plugin.</p>';
}
public function modify_post_title($title) {
if (in_the_loop()) {
return '📝 ' . $title;
}
return $title;
}
}
// 实例化插件类
new My_Advanced_Plugin(); Dodać stronę z ustawieniami dla panelu administracyjnego.
Wiele wtyczek wymaga, aby użytkownicy mieli dostęp do opcji konfiguracji. Dodawanie stron z ustawieniami w panelu administracyjnym WordPressa często polega na użyciu określonych narzędzi lub procedur. add_menu_page() 或 add_submenu_page() Funkcja, w połączeniu z API Settings, umożliwia bezpieczne zapisywanie ustawień.
Klasa My_Plugin_Settings {
public function __construct() {
add_action('admin_menu', array($this, 'add_admin_menu'));
add_action('admin_init', array($this, 'register_settings'));
}
public function add_admin_menu() {
add_options_page(
'Moje ustawienia wtyczki', // Tytuł strony
'Moja wtyczka', // Tytuł menu
'manage_options', // Uprawnienia
'my-plugin-settings', // Nazwa menu
array($this, 'render_settings_page') // Funkcja wywołująca
);
}
public function render_settings_page() {
?>
<div class="wrap">
<h1>Ustawienia mojej wtyczki.</h1>
<form method="post" action="/pl/options.php/" data-trp-original-action="options.php">
<?php
settings_fields('my_plugin_options_group');
do_settings_sections('my-plugin-settings');
submit_button();
?>
<input type="hidden" name="trp-form-language" value="pl"/></form>
</div>
<?php
}
public function register_settings() {
register_setting('my_plugin_options_group', 'my_plugin_option_name');
// ... dodaj pola i sekcje ustawień
}
} Utwórz niestandardową tabelę w bazie danych.
Dla niektórych wtyczek, które wymagają przechowywania złożonych danych, może być konieczne stworzenie własnych tabel danych. Ten proces powinien zostać zrealizowany w momencie aktywacji wtyczki.
WordPress oferuje wygodny klas dla operacji z bazą danych. wpdbKod służący do tworzenia tabeli zwykle umieszczany jest w pliku, który jest wykorzystywany przez aplikację do realizacji odpowiednich operacji. register_activation_hook W zarejestrowanej funkcji.
function my_plugin_create_database_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'my_custom_data';
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
user_id mediumint(9) NOT NULL,
data text NOT NULL,
created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
register_activation_hook(__FILE__, 'my_plugin_create_database_table'); Bezpieczeństwo i dystrybucja pluginów
Przed wdrożeniem dodatku konieczne jest sprawdzenie jego bezpieczeństwa oraz zrozumienie podstawowych procedur jego dystrybucji.
Wdrożenie najlepszych praktyk bezpieczeństwa
Wszelkie dane otrzymane od użytkowników, bez względu na to, z jakiego źródła pochodzą… $_GET、$_POST Również dane z bazy danych muszą zostać sprawdzone, wy清czyszczone i poddane procesowi escape. Zawsze używaj funkcji dostępnych w WordPress. esc_html()、wp_strip_all_tags()、intval() też prepare() Metody obsługi zapytań SQL, które zapobiegają atakom typu XSS (Cross-Site Scripting) i SQL injection.
Aby sprawdzić, czy ktoś ma uprawnienia do wykonywania operacji administracyjnych lub kluczowych, konieczne jest użycie funkcji sprawdzających uprawnienia. current_user_can('manage_options') 或 check_ajax_referer()。
Gotowe jest dodatkowe oprogramowanie (plugin), które można złożyć do oficjalnego katalogu.
Jeśli chcesz bezpłatnie rozdawać ten plugin użytkownikom na całym świecie, możesz złożyć go do katalogu pluginów na stronie WordPress.org. To wymaga stosowania określonych standardów, m.in. używania systemu kontroli wersji SVN, dbania o jakość kodu oraz dostarczania plików z tłumaczeniami. Dobry plugin powinien spełniać te wymogi, aby móc zostać przyjęty do oficjalnego katalogu WordPress. readme.txt Plik jest konieczny i musi spełniać określony format, aby informacje mogły zostać wyświetlone na stronie z szczegółami pluginu.
Podsumowanie.
Rozwoj pluginów dla WordPressu polega na zrozumieniu podstawowego systemu hooków, a potem na poznawaniu kolejnych aspektów tego procesu, takich jak budowa funkcji, zarządzanie witryną administracyjną, obsługa danych, a także dbałość o bezpieczeństwo i dystrybucję pluginów. Początkujący powinni zacząć od stworzenia prostego pluginu z kilkoma filtrami, a potem spróbować programowania obiektowego, dodania stron konfiguracji oraz manipulacji z własnymi tabelami w bazie danych. Pamiętaj, że bezpieczeństwo to najważniejszy element w rozwoju pluginów – umiejętne wykorzystanie wielu dostępnych funkcji bezpieczeństwowych w WordPressie jest kluczowym elementem przy tworzeniu niezawodnych rozwiązań. Dodawanie standardów rozwoju i stosowanie najlepszych praktyk sprawi, że twój plugin będzie łatwy w utrzymaniu i stworzy dobrą bazę do dalszej publikacji w oficjalnym katalogu lub na rynku pluginów.
FAQ – najczęściej zadawane pytania.
Ile plików musi mieć co najmniej jeden dodatek (plugin)?
Aby stworzyć dodatek (plugin), wystarczy co najmniej jedna plik PHP. Wystarczy, aby ta plik zawierała poprawne informacje o nagłówku pliku dodatku oraz by była umieszczona w odpowiednim miejscu. /wp-content/plugins/ Jeśli plik znajduje się w katalogu lub jego podkatalogu, WordPress będzie w stanie go rozpoznać i załadować.
Oczywiście, wraz z zwiększającą się złożonością funkcji rozdzielanie kodu na kilka plików (np. JavaScript, CSS, oddzielne pliki z klasami w PHP itd.) jest lepszym sposobem na jego organizację.
W jaki sposób różnią się „hooki” (hooks) i „filtry” (filters) w pluginach WordPress?
Akcje hooki (Action Hooks) i filtry hooki (Filter Hooks) czasem nazywane są po prostu “hookami”, ale ich zastosowania są różne.
Aktywnie działające “haki” (ang. action hooks) umożliwiają wstawienie własnego kodu w określone punkty życiowego procesu obsługi witryny WordPress. Nie wymagają żadnych wartości powrotowych; ich zadaniem jest wykonywanie określonej operacji, np. wysyłanie wiadomości e-mail lub zapisywania informacji do logów. Podstawową funkcją w tym kontekście jest… add_action() 和 do_action()。
Filtry z hookami umożliwiają modyfikację wartości danej zmiennej (zwykle stringu lub arrayu). Oczekuje się, że Twoja funkcja callback powróci zmienioną wartość. Podstawową funkcją w tym kontekście jest… add_filter() 和 apply_filters()。
Prostym językiem: “Działanie” to wykonywanie czegoś konkretnego, a “filtr” to zmiana danych.
Jak uniknąć konfliktów pomiędzy nazwami funkcji wtyczek a nazwami tematów lub innych wtyczek?
Najlepszym sposobem jest używanie programowania obiektowego i umieszczenie wszystkich funkcji w jednej klasie. W ten sposób muszą być unikalne tylko nazwy klasy i metod.
Jeśli używasz programowania proceduralnego, należy dodać do nazw wszystkich funkcji, stałych oraz zmiennych globalnych unikalny, łatwo rozpoznawany prefiks. Najczęściej jako prefiks wykorzystuje się nazwę lub skrót pliku rozszerzalnego. Na przykład, jeśli twoje rozszerzenie nosi nazwę “Super Tool”, nazwy funkcji mogą brzmieć np. „superToolFunction()”. stool_get_data()、stool_OPTION_KEY Tak.
Innym, bardziej skutecznym sposobem jest używanie przestrzeni nazw w PHP, które umożliwia najefektywniejsze oddzielenie Twojego kodu od innych elementów aplikacji.
W procesie rozwoju dodatków (pluginów) jak należy obsługiwać ustawienia i opcje użytkowników?
WordPress mocno zaleca używanie swojego API Settings do zarządzania opcjami wtyczek. Dzięki temu API bezpiecznie przechowuje te opcje (w bazie danych WordPress). wp_options Weryfikacja niezgodności z wymaganiami („non-CE validation”), renderowanie polów oraz wysyłanie formularzy to bezpieczny i standardowy sposób działania w aplikacjach.
Głównymi krokami są: register_setting() Zarejestruj grupę opcji i użyj jej. add_settings_section() 和 add_settings_field() Dodaj obszar dla ustawień oraz pola, a na końcu użyj tego na stronie klienta ( frontend). settings_fields() 和 do_settings_sections() W ten sposób można utworzyć pełny formularz ustawień. Podczas zapisywania opcji należy użyć… update_option() Funkcja.
Następny krok, co dalej?
Dalsze lektury i praktyczna wiedza.
Poniższe treści są powiązane z tematem tego artykułu i warto je przeczytać. Zwykle lepiej zacząć od artykułu, który najbardziej odpowiada aktualnemu problemowi, a potem stopniowo przechodzić do tematów pokrewnych.
- Przewodnik po tworzeniu pluginów dla WordPress: jak stworzyć swój pierwszy własny plugin od zera
- Jak stać się deweloperem pluginów dla WordPressa: pełny przewodnik od zera do jednego
- Pełny przewodnik po rozwoju pluginów dla WordPressa: od poznania podstaw do osiągnięcia biegłości w tworzeniu profesjonalnych rozszerzeń
- Rozwój pluginów dla WordPress: od poznania podstaw do osiągnięcia biegłości – stworzenie twojego pierwszego własnego pluginu
- Od zera do jednego: pełny przewodnik po stopniowym tworzeniu twojego pierwszego dodatku dla WordPress