Zrozumienie podstawowej struktury pluginów WordPress
Przed zagłębieniem się w kod istotne jest zrozumienie podstawowych elementów składowych pluginu WordPress. Plugin w istocie jest jednym lub kilkoma elementami, które są umieszczone w strukturze witryny internetowej.wp-content/plugins/Pliki PHP znajdują się w katalogu. Ich istotą jest główny plik, który zawiera metadane o pluginie, a informacje o jego obecności są przekazane WordPress poprzez blok komentarzy w specjalnym formacie.
Podstawowy plik wejściowy do pluginu – na przykład ten, który nazwaliśmy „mainPlugin.js”.my-first-plugin.phpPlug-in musi zawierać określony blok komentarzy na początku pliku. Ten blok komentarzy definiuje nazwę plug-inu, opis, wersję, autora itd. i stanowi jedyny element, na podstawie którego WordPress rozpoznaje i łada plug-in. Najprostszzy plug-in może składać się wyłącznie z tego jednego pliku; za pomocą API dostępnych w WordPress (takich jak aktywnie używane „hooki” – Action Hooks oraz „hooki filtrów” – Filter Hooks) plug-in może modyfikować lub rozszerzać funkcje witryny internetowej.
Możliwości pluginów mogą być bardzo proste – na przykład dodanie jednego wiersza tekstu na dno strony – ale mogą też być wyjątkowo złożone, np. tworzenie kompletnego systemu e-handlu. Bez względu na poziom złożoności, ich rozwoj odbywa się według tego samego podstawowego modelu: najpierw tworzy się odpowiednia struktura plików w prawidłowym miejscu, potem pisze się kod i integruje się on z mechanizmami działania WordPressa, a na koniec dokonuje się konfiguracji oraz niezbędnych interakcji za pomocą interfejsu administracyjnego WordPressa.
Polecamy lekturę. Przewodnik po rozwoju pluginów dla WordPressa: Stworzenie swojego pierwszego pluginu od zera。
Utwórz swój pierwszy wtyczkę.
Zróbmy to, używając klasycznego przykładu “Hello World”, aby zapoznać się z tworzeniem najprostszego pluginu. Funkcja tego pluginu polega na wyświetlaniu powitania na początku treści artykułu na każdej stronie witryny.
Najpierw musisz to zrobić lokalnie lub na serwerze.wp-content/plugins/Utworz nowy folder w katalogu i nazwij go…my-hello-pluginNastępnie, w tym folderze utwórz główny plik PHP i nazwij go…my-hello-plugin.php。
Napisanie głównego pliku pluginu
Otwórzmy-hello-plugin.phpWłącz plik i wpisz następujący kod. Ten kod odpowiada standardowemu formatowi pluginów WordPress i zawiera informacje o pluginie, a także kod realizujący jego funkcje.
<?php
/**
* Plugin Name: 我的问候插件
* Plugin URI: https://yourwebsite.com/my-hello-plugin
* Description: 这是一个简单的插件,用于在文章内容前输出“您好,读者!”。
* Version: 1.0.0
* Author: 你的名字
* License: GPL v2 or later
* Text Domain: my-hello-plugin
*/
// 防止直接访问文件
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* 在主文章内容前添加问候语。
*
* @param string $content 原始的文章内容。
* @return string 添加了问候语后的新内容。
*/
function my_hello_add_greeting( $content ) {
$greeting = '<p style="background-color:#f0f8ff; padding:10px; border-left:4px solid #0073aa;"><strong>Witaj, czytelniku! Serdecznie zapraszamy do czytania tego tekstu.</strong></p>';
// 只在主循环且是文章页面时添加
if ( is_single() && in_the_loop() && is_main_query() ) {
return $greeting . $content;
}
return $content;
}
// 将函数挂载到 ‘the_content’ 过滤器
add_filter( 'the_content', 'my_hello_add_greeting' ); Aktywuj i sprawdź dodatek.
Aby wgrać folder zawierający ten plik na serwer, należy wykonać następujące kroki:wp-content/plugins/Katalog… A jeśli pracujesz lokalnie, po prostu umieśc plik w odpowiednim miejscu. Następnie loguj się do panelu administracyjnego WordPress i przejdź do menu “Dodatki”. Powinienś znaleźć w nim element “Moje powitanie”. Kliknij na przycisk “Uwolnij”.
Po aktywacji, przy wejściu na jakiekolwiek artykuł lub stronę na stronie internetowej pojawi się powitanie z jasnoniebieskim tłem i lewym obramowaniem przed rozpoczęciem tekstu artykułu. Ten proces jasno pokazuje kluczowe etapy rozwoju pluginów: tworzenie plików, dodawanie funkcji za pomocą „hooków” oraz aktywacja w tle aplikacji. Udało ci się już przebyć pierwszy krok na drodze do rozwoju pluginów dla WordPress.
Polecamy lekturę. Rozwoj pluginów dla WordPressa: budowanie zaawansowanych rozszerzeń dla witryn internetowych od zera。
Rozszerzanie funkcjonalności za pomocą haków (hooks) i filtrów
Flexibilita i rozszerzalność WordPressu w dużej mierze wynika z jego systemu “hooków” (ang. Hooks). Hooki są podzielone na dwa typy: hooki akcji (Actions) i hooki filtrów (Filters). Zrozumienie i biegłe korzystanie z nich jest kluczowym elementem w rozwoju zaawansowanych wtyczek (pluginów).
Aktywnie działające „hooki” (ang. action hooks) umożliwiają wstawianie i wykonywanie własnego kodu w określonych momencach działania WordPressa – na przykład przy publikacji artykułu lub przy ładowaniu strony.save_postDziałanie jest aktywowane w momencie, gdy tekst artykułu lub strony jest zapisany do bazy danych. Możesz to zrobić za pomocą odpowiednich procedur programowych.add_action()Funkcja umożliwia “przypięcie” Twojej własnej funkcji do tego hooka.
Filtry hooki umożliwiają modyfikację danych generowanych przez WordPress w trakcie procesu obsługi stron internetowych. Rejestrujesz funkcję w filtrze, a gdy WordPress wykona ten filtr, przekazuje dane do wszystkich zarejestrowanych funkcji i oczekuje na ich wynik po obróbce. W przykładzie powyżej użyto właśnie tego mechanizmu.the_contentTo typowy „hook” filtru, który umożliwia modyfikację treści artykułu przed jego wyświetleniem.
Stworzyć prostą opcję zarządzania.
Prawdziwie przydatny plugin wymaga zwykle kilku opcji, które użytkownik może skonfigurować. To wymaga interakcji z backendem WordPress. Pokażemy, jak dodać stronę z ustawieniami dostosowanymi, na przykładzie prostego przykazu.
Najpierw użyjemy…add_action(‘admin_menu’, …)Zarejestruj funkcję, która umożliwi tworzenie nowego elementu menu w panelu administracyjnym.
/**
* 在WordPress后台添加一个自定义菜单页面。
*/
function my_hello_add_admin_menu() {
add_menu_page(
‘问候插件设置’, // 页面标题
‘问候插件’, // 菜单标题
‘manage_options’, // 所需权限
‘my-hello-plugin’, // 菜单slug
‘my_hello_admin_page_html’, // 用于显示页面内容的回调函数
‘dashicons-format-chat’, // 图标(可选)
80 // 菜单位置(可选)
);
}
add_action( ‘admin_menu‘, ’my_hello_add_admin_menu’ );
/**
* 自定义设置页面的HTML输出。
*/
function my_hello_admin_page_html() {
// 检查用户权限
if ( ! current_user_can( ‘manage_options’ ) ) {
return;
}
?>
<div class="“wrap”">
<h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
<form action="/pl/“options.php”/" method="“post”" data-trp-original-action="“options.php”">
<?php
// 输出设置字段、安全性和保存更改按钮
settings_fields( ‘my_hello_options’ );
do_settings_sections( ‘my-hello-plugin’ );
submit_button( ‘保存问候语设置’ );
?>
<input type="hidden" name="trp-form-language" value="pl"/></form>
</div>
<?php
} Pola ustawień dotyczących rejestracji i wyświetlania
Nie wystarczy tylko strony – musimy stworzyć opcje, które można zapisać. Do tego potrzebny będzie…add_action(‘admin_init’, …)…a takżeregister_setting()、add_settings_section()和add_settings_field()I tak dalej – seria funkcji.
Polecamy lekturę. Od počzątków do mistrzostwa: Pełny przewodnik po tworzeniu pluginów dla WordPress。
/**
* 初始化插件的设置。
*/
function my_hello_settings_init() {
// 注册一个设置项到数据库的‘my_hello_options’键下
register_setting( ‘my_hello_options‘, ’my_hello_greeting_text’ );
// 在页面中添加一个设置区域
add_settings_section(
‘my_hello_section’, // 区域ID
‘问候语设置’, // 区域标题
‘my_hello_section_html’, // 区域描述的回调函数
‘my-hello-plugin’ // 所属页面slug
);
// 在区域内添加一个具体的设置字段
add_settings_field(
‘my_hello_field’, // 字段ID
‘自定义问候语’, // 字段标签
‘my_hello_field_html’, // 用于渲染字段HTML的回调函数
‘my-hello-plugin’, // 所属页面slug
‘my_hello_section’ // 所属区域ID
);
}
add_action( ‘admin_init‘, ’my_hello_settings_init’ );
/**
* 设置区域的描述信息。
*/
function my_hello_section_html() {
echo ‘<p>Ustaw tu tekst powitania, który będzie wyświetlany na początku artykułu.</p>’;
}
/**
* 渲染设置字段的HTML。
*/
function my_hello_field_html() {
// 从数据库获取已保存的值,如果没有则使用默认值
$greeting = get_option( ‘my_hello_greeting_text‘, ’您好,读者!欢迎阅读本文。’ );
?>
<input type="‘text’"
id="‘my_hello_greeting_text’"
name="‘my_hello_greeting_text’"
value="“NO NUMERIC NOISE KEY" 1000”
class="“regular-text”" />
<p class="“description”">Wpisz powitanie, które chcesz, aby wyświetlało się na początku treści artykułu.</p>
<?php
} Teraz posiadamy stronę ustawień w tle z polem wejściowego. Następnie konieczne jest zmianienie funkcji realizujących początkowe funkcje.my_hello_add_greetingNiech to odczyta powitanie z listy dostępnych opcji w bazie danych.
function my_hello_add_greeting( $content ) {
// 获取保存的自定义问候语,如果不存在则使用默认值
$custom_greeting = get_option( ‘my_hello_greeting_text‘, ’您好,读者!欢迎阅读本文。’ );
$greeting = ‘<p style="“background-color:#f0f8ff;" padding:10px; border-left:4px solid #0073aa;”><strong>’ . esc_html( $custom_greeting ) . ‘</strong></p>’;
if ( is_single() && in_the_loop() && is_main_query() ) {
return $greeting . $content;
}
return $content;
} Takim sposobem został stworzony plugin, który posiada podstawowe funkcje konfiguracji w tle systemu. Użytkownicy mogą swobodnie zmieniać tekstów powitań w menu “Plugin do powitań” w obszarze konfiguracji, a teksty artykułów na stronie frontowej będą automatycznie aktualizowane według najnowszych ustawień.
Najlepsze praktyki i zasady bezpieczeństwa w rozwoju dodatków (plug-inów)
Aby stworzyć plugin do WordPressu, który będzie używany przez innych, należy nie tylko zapewnić, że będzie pełnowartościowy pod względem funkcjonalności, ale także przestrzegać najlepszych praktyk dotyczących bezpieczeństwa, wydajności i łatwości konserwacji.
Aspekty bezpieczeństwa
Bezpieczeństwo to najważniejszy princip. Nigdy nie możesz ufać danym wprowadzonym przez użytkowników. Wszelkie informacje uzyskane od użytkowników muszą być sprawdzone i zweryfikowane.$_GET、$_POST、$_COOKIEPrzed użyciem w zapytach do bazy danych, wyświetleniem na stronie lub operacjach z plikami, wszystkie dane muszą zostać odpowiednio przygotowane (oczyszczone), sprawdzone oraz uwzględnione specjalne wymogi (np. escape).
Dla danych wyświetlanych na stronie HTML należy użyć…esc_html()、esc_attr()或wp_kses_post()Funkcje takie jak escape są konieczne do bezpiecznego obsługi danych. W przypadku zmiennych używanych w zapytach do bazy danych należy ich wartości zawsze uwzględnić pod kątem wymagań bezpieczeństwa.$wpdb->prepare()Aby wykonywać zapytania z parametrami, zawsze unikaj bezpośredniego łączenia zmiennych z instrukcjami SQL. W pluginach należy zawsze używać odpowiednich mechanizmów do przekazywania parametrów do zapytów.defined(‘ABSPATH’) or die;Ma to zapobiec bezpośredniemu dostępu do plików.
Organizacja kodu i internacionalizacja
Wraz z rozwojem funkcjonalności dodatków staje się trudne utrzymywać cały kod w jednym głównym pliku. Rozsądne rozwiązanie polega na rozdzielaniu kodu według jego funkcji na różne pliki. Główny plik zwykle odpowiada za definiowanie „hooków” (elementów interfejsu) i kluczowych procesów, natomiast strony konfiguracji, funkcje, definicje klas itd. umieszczane są w osobnych plikach.includes/或admin/、public/W takich podkatalogach… i poprzez…require_onceWprowadzenie.
Aby twoje wtyczki były dostępne dla użytkowników z całego świata, konieczne jest uwzględnienie aspektów internacionalizacji (i18n). To oznacza, że wszystkie tekstowe wyrazy wyświetlone w wtyczce muszą być przetłumaczone za pomocą funkcji dostępnych w WordPress.__()、_e()Zrealizuj pakowanie i przygotuj wszystko niezbędne.Text DomainUstawiono unikalny identyfikator (na przykład nazwę katalogu z pluginami). W bloku komentarzy na początku pliku już dokonano tego definiowania.Text Domain: my-hello-pluginW kodzie należy to używać w następujący sposób:
$pozdrowienie = ‘<p><strong>’ . esc_html__( ‘您好,读者!欢迎阅读本文。’ , ’my-hello-plugin’ ) . ‘</strong></p>’; Dzięki temu tłumacze będą mogli korzystać z tego narzędzia..po和.moPlik zawiera tłumaczenia różnych języków dla twojego pluginu.
Optymalizacja wydajności.
Dodatki powinny jak najmniej wpływać na wydajność witryny. Unikaj dużego liczba zapytań do bazy danych lub złożonych obliczeń przy każdym ładowaniu strony, szczególnie na stronie klienta (frontend). Korzystaj zgodnie z zasadami API do zarządzania tymczasowymi danymi (Transients API) w WordPress, aby przechowywać wyniki zapytań, które nie zmieniają się często. Na przykład, jeśli chcesz zczerpać i zmagazynować wynik żądania API, możesz to zrobić w następujący sposób:
$data = get_transient( ‘my_plugin_api_data’ );
if ( false === $data ) {
// 数据不存在或已过期,从API获取
$data = wp_remote_retrieve_body( wp_remote_get( ‘https://api.example.com/data’ ) );
// 将数据存储12小时
set_transient( ‘my_plugin_api_data’, $data, 12 * HOUR_IN_SECONDS );
}
// 使用 $data Ponadto upewnij się, że pliki CSS i JavaScript są ładowane tylko na potrzebnych stronach. Korzystaj z tego rozwiązania, aby zwiększyć wydajność witryny i uniknąć niepotrzebnego obciążenia.wp_enqueue_script()和wp_enqueue_style()Funkcja, w połączeniu z odpowiednimi „hookami” (np.wp_enqueue_scriptsAby załadować zasoby frontendu, używa się… (The text continues with the specific method or mechanism for loading front-end resources); natomiast dla zasobów backendu stosuje się inny sposób.admin_enqueue_scriptsHak.
Podsumowanie.
Poprzez krok po kroku opisane w tym tekście udało nam się przeprowadzić cały proces rozwoju od prostego pluginu “Hello World” do przydatnego pluginu, który zawiera opcje konfiguracji w tle i stosuje zasady bezpieczeństwa oraz organizacji kodu. Kluczowym elementem jest zrozumienie i wykorzystanie mechanizmów stanowiących istotę WordPressa – systemu hooków. Dzięki temu możemy rozszerzać funkcje platformy w sposób modułowy i nieinwazywny. Bez względu na to, czy chodzi o modyfikację treści (filtry) czy wykonywanie określonych zadań (akcje), hooki stanowią most łączący nasz kod z resztą świata WordPressa.
Pamiętaj, że dobre programowanie dodatków (pluginów) nie polega tylko na uruchomieniu ich funkcji. Wymaga też ścisłego działania z punktu widzenia bezpieczeństwa wobec wprowadzanych przez użytkowników danych, jasnego zorganizowania kodu, wsparcia dla różnych języków (internacjonalizacji) oraz dokładnego uwzględnienia wymagań dotyczących wydajności witryny. Każdy krok – od dobrze skonstruowanego nagłówka pliku dodatku, przez używanie standardowych API do tworzenia menu i ustawień, aż po bezpieczne formatowanie wyświetlanych danych – ma wpływ na jakość, bezpieczeństwo oraz przyjemność korzystania z dodatku. Dzięki dalszemu poznawaniu wielu API i funkcji WordPressu będziesz mogąc tworzyć dodatki, które są wydajne i niezawodne w działaniu.
FAQ – najczęściej zadawane pytania.
Jaki jest wymóg podstawowy, by zacząć rozwijać dodatki (plugi)?
Konieczne jest posiadanie podstawowych znajomości języka programowania PHP, w tym takich elementów jak zmienne, funkcje, tablice, warunkowe wyrażenia i pętli. Podstawowe znania HTML i CSS są również przydatne, ponieważ często pliki rozszerzeń są używane do generowania lub modyfikacji interfejsu użytkownika. Wiedza o podstawowym kullanowaniu WordPressa oraz jego strukturze backendowej ułatwi proces rozwoju aplikacji.
Jak debugować moją wtyczkę WordPress?
Najpierw upewnij się, że…wp-config.phpW pliku włączony został tryb debugowania WordPress. To umożliwione poprzez odpowiednie ustawienia.define('WP_DEBUG', true);和define('WP_DEBUG_LOG', true);Informacja o błędzie zostanie zarejestrowana.wp-content/debug.logW pliku to jest bezpieczniejsze niż pokazanie tego bezpośrednio na stronie. Ponadto można to połączyć z innymi metodami bezpieczeństwa.error_log()Funkcje służą do wyświetlania wartości zmiennych, a narzędzia dostępne w programach do rozwoju stron internetowych (np. “Network” i “Console” w narzędziach developerskich browsera) pomagają w diagnozowaniu problemów z kodem skriptów i stylami front-endu.
Można założyć moje dodatkowe funkcje (plug-iny) do oficjalnego katalogu dodatków?
Możliwe, ale należy spełnić wymogi oficjalnego systemu do wysyłania pluginów w WordPress. To obejmuje sprawdzenie, czy twój plugin jest zgodny z licencją GPL, czy stosuje standardy kodowania WordPress, czy kod jest bezpieczny i nie zawiera żadnego złośliwego oprogramowania, a także dostarczenie jasnych dokumentacji. Przed wysłaniem pluginu zaleca się uważne przeczytanie dostępnych instrukcji dla developerów i porad dotyczących procedury składania. Proces składania wymaga przeprowadzenia auditu przez system do wysyłania pluginów na stronie WordPress.org.
W jaki sposób różnią się funkcje dodatków (plug-inów) i tematów (templates)? Kiedy warto rozwijać dodatki?
Tema (Theme) odpowiada przede wszystkim za wygląd i układ witryny internetowej; zajmuje się zwykle plikami szablonów, arkuszkami stylu oraz niektórymi funkcjami związanymi z ich prezentacją. Natomiast pluginy (Plugins) służą do dodawania lub modyfikowania funkcjonalności witryny, a ich wpływ jest (w większości przypadków) niezależny od aktualnie używanego tematu. Dobrym kryterium jest to, czy dane funkcje są bezpośrednio powiązane z wyglądem witryny (np. układ stron, kolorystyka) – w takich przypadkach warto je umieścić w temacie. Jeśli natomiast funkcje są ogólne i niezależne od konkretnego tematu (np. formularze kontaktowe, optymalizacja SEO, mechanizmy cache’owania), to powinny być implementowane jako pluginy, aby zachować oddzielenie pomiędzy funkcjonalnością a designem oraz zwiększyć elastyczność witryny.
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.
- Wstęp: dlaczego wybrałem WordPress do tworzenia stron internetowych?
- Czemu wybraliście WooCommerce jako rozwiązanie do sprzedaży w sieci internetowej?
- Pełny przewodnik po WooCommerce: jak stworzyć swoją sklep internetową i strategię sprzedaży od zera
- 10 najlepszych pluginów do WordPress, które znacząco poprawią wydajność i bezpieczeństwo witryny
- WooCommerce: Kompletny przewodnik – jak stworzyć swoją własną stronę e-handlu na WordPress od zera