Praktyczny przewodnik po tworzeniu wtyczek WordPress: od zera do stworzenia swojej pierwszej funkcjonalnej wtyczki.

3 minuty na przeczytanie.
2026-03-20
2026-06-03
2,031
Zarabiam prowizję, gdy robisz zakupy poprzez poniższe linki, bez żadnych dodatkowych kosztów dla Ciebie.

System pluginów w WordPress jest kluczowym elementem jego potężnych możliwości rozszerzalności. Za pomocą pluginów programiści mogą dodawać do witryny różne funkcje – od prostych form kontaktowych po zaawansowane rozwiązania e-handlu. Ten tekst pokazać ci, jak tworzyć pełnowartościowy plugin, poznasz jego strukturę, mechanizmy współpracy z innymi elementami systemu („hooki”), aspekty bezpieczeństwa oraz najlepsze praktyki stosowane przy ich tworzeniu. Na koniec będziesz mieć gotowy plugin, który możesz od razu uruchomić i używać.

Środowisko rozwoju i przygotowania podstawowe

Przed napisaniem pierwszego linii kodu istotne jest posiadanie stabilnego i wydajnego środowiska rozwoju. To nie tylko umożliwia skupienie się na budowaniu logiki, ale także pomaga uniknąć wielu typowych błędów.

Konfiguracja lokalnego środowiska deweloperskiego.

Zaleca się używać lokalnych pakietów środowisk serwerowych, takich jak XAMPP, MAMP lub bardziej profesjonalnego Local by Flywheel. Upewnij się, że twoja wersja PHP (zalecana jest wersja 7.4 lub wyższa) jest kompatybilna z otoczeniem WordPress, w którym chcesz go rozwinąć, i włącz modeł debugowania.wp-config.phpW pliku ustawienia zostały zdefiniowane.WP_DEBUGtrueW fazie rozwoju wszystkie błędy i ostrzeżenia będą wyświetlone, co pomoże ci szybko zlokalizować problem.

Polecamy lekturę. Przewodnik po rozwoju pluginów dla WordPress: od zera do budowy profesjonalnych modułów funkcjonalnych

Planowanie struktury plików rozszerzeń

Standardowy plugin musi mieć co najmniej jedno główne plików. Zwykłe rozwiązanie polega na stworzeniu specjalnego foldera dla pluginu, który nosi nazwę odnoszącą się do jego kluczowej funkcji.my-first-pluginW tym folderze główny plik zwykle ma taką samą nazwę jak folder, ale z rozszerzeniem na końcu..phpCzylimy-first-plugin.phpJasna struktura ułatwia dodawanie później plików JavaScript, CSS, pakietów językowych lub plików z klasami.

UltaHost – hostingu dla stron WordPress
Gwarancja zwrotu pieniędzy w ciągu 30 dni, nieograniczony przepustowość sieci i dostęp do bazy danych, bezpłatna ochrona przed atakami typu DDoS. Promocja: 50% przy zakupie na 3 lata.

Tworzenie pliku głównego pluginu oraz podstawowych informacji metajęzykowych

“Wejście” do pluginu oraz proces identyfikacji użytkownika zależą od informacji zawartych w nagłówku (header) na początku głównego pliku. To kluczowe elementy, które umożliwiają WordPressowi rozpoznanie i uruchomienie pluginu.

Napisanie standardowego nagłówka pliku rozszerzenia (plugin header):

Na początku głównego pliku PHP konieczne jest użycie specjalnego bloku komentarzy PHP, aby udostępnić informacje o pluginie. Te informacje będą wyświetlone na stronie zarządzania pluginami w panelu administracyjnym WordPress.

<?php
/**
 * Plugin Name:       我的第一个功能插件
 * Plugin URI:        https://example.com/my-first-plugin
 * Description:       这是一个实战指南中创建的示例插件,用于演示核心开发流程。
 * Version:           1.0.0
 * Author:            你的名字
 * Author URI:        https://example.com
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 * Domain Path:       /languages
 */

Wśród nichPlugin NameText DomainTo pola obowiązkowe; pozostałe pola są opcjonalne. Pole tekstowe.Text DomainWykorzystywane do wsparcia procesów internacjonalizacji.

Zabraniać bezpośredniemu dostępu do plików

Aby zabezpieczyć kod wtyczki przed dostępem bezpośrednim poprzez URL, co może doprowadzić do wycieku informacji lub błędów, konieczne jest dodanie kontroli dostępu tuż po nagłówkach (headerach) i przed wszystkim innym kodem.

Polecamy lekturę. Przewodnik po niestandardowym rozwoju wtyczki WooCommerce: stwórz swój własny sklep internetowy.

// 防止直接访问
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

constantaABSPATHTo absolutna ścieżka do katalogu głównego WordPressa; WordPress definiuje ją podczas swojego działania. Ta warunkowość gwarantuje, że następny kod zostanie wykonywany wyłącznie w środowisku WordPressa.

Rozwijanie kluczowych funkcji w połączeniu z hookami WordPress.

WordPress umożliwia korzystanie z dwóch potężnych mechanizmów: aktywnych haczków (action hooks) i filtrowych haczków (filter hooks), które pozwalają na włączenie Twojego kodu w określone momenty procesu obsługi witryny lub modyfikację danych. Zrozumienie i skuteczne wykorzystanie tych mechanizmów jest kluczowe przy tworzeniu dodatków (pluginów) do WordPress.

Dodawanie funkcji za pomocą aktywnych háków (action hooks)

Aktywnie działające „haki” (ang. action hooks) umożliwiają wykonywanie własnego kodu w momencie wystąpienia określonych zdarzeń. Na przykład, możemy stworzyć funkcję, która automatycznie dodaje informacje o autorskich prawach na dno treści artykułu. Do tego potrzebny jest odpowiedni kod.the_contentFiltry (w istocie to „hooki” do filtracji, ale ich zasada działania jest podobna do „hooków” akcji) i…wp_enqueue_scriptsAktywny „hook” służy do ładowania zasobów.

hosting.com Hosting współdzielony
Wysoka wydajność dzięki procesorom AMD EPYC, pamięci masowej NVMe SSD i LiteSpeed, wewnętrzne wsparcie ekspertów 24/7, zaawansowane środki bezpieczeństwa, w tym SSL, brute force, ochrona przed złośliwym oprogramowaniem i DDoS, oszczędność do 73%

Najpierw napiszemy funkcję.mfp_add_copyright_noticeI umontuj to na…the_contentNa haczu.

// 在文章内容后添加版权声明
function mfp_add_copyright_notice( $content ) {
	if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
		$copyright_text = '<p><em>Prawa autorskie do tego artykułu należą do tej witryny. W przypadku jego przedrukowania należy podać źródło.</em></p>';
		$content .= $copyright_text;
	}
	return $content;
}
add_filter( 'the_content', 'mfp_add_copyright_notice' );

Warunkowe sprawdzenie gwarantuje, że informacja o prawach autorskich będzie wyświetlona tylko w głównym cyklu obsługi jednego artykułu na stronie frontowej, bez wpływu na treść strony, jej opis ani na procesy działające w tle (w środowisku backend).

Modyfikacja danych za pomocą hooków filtrów

Filtry hooki są używane do modyfikacji danych przekazywanych do nich. Załóżmy, że chcemy zmienić część nagłówka strony internetowej – wtedy możemy stworzyć funkcję i dodać ją do odpowiedniego elementu kodu.wp_titlelub w bardziej nowoczesnym styludocument_title_partsFiltry.

Polecamy lekturę. Szczegółowe wyjaśnienie całego procesu tworzenia wtyczek do WordPressa: praktyczny przewodnik od podstaw do zaawansowanych technik.

// 修改网站标题后缀
function mfp_modify_title_suffix( $title ) {
	if ( is_home() ) {
		$title['suffix'] = ' | 我的精彩博客';
	}
	return $title;
}
add_filter( 'document_title_parts', 'mfp_modify_title_suffix' );

Bezpieczne włączenie skryptów i stylów

Aby dodać styl graficzny lub interakcje do wtyczki, konieczne jest użycie rozwiązań zalecanych przez WordPress.wp_enqueue_style()wp_enqueue_script()Funkcja, a potem poprzez…wp_enqueue_scriptsWywołanie hooka.

// 注册并排队插件的前端样式
function mfp_enqueue_frontend_assets() {
	// 获取插件目录的URL
	$plugin_url = plugin_dir_url( __FILE__ );

// 排队一个CSS文件
	wp_enqueue_style(
		'mfp-frontend-style',
		$plugin_url . 'assets/css/frontend.css',
		array(),
		'1.0.0'
	);

// 排队一个JS文件,并依赖jQuery
	wp_enqueue_script(
		'mfp-frontend-script',
		$plugin_url . 'assets/js/frontend.js',
		array( 'jquery' ),
		'1.0.0',
		true // 在页脚加载
	);
}
add_action( 'wp_enqueue_scripts', 'mfp_enqueue_frontend_assets' );

Tworzenie strony zarządzania oraz ustawień

Wiele wtyczek wymaga dostarczenia użytkownikom opcji konfiguracji. WordPress oferuje API do ustawień, które umożliwia bezpieczne i standardowe tworzenie meniów administracyjnych oraz stron z opcjami konfiguracji.

Hosting współdzielony InterServer
Hosting współdzielony $2.50 USD miesięcznie, pierwszy miesiąc $0.1 USD kod promocyjny tryinterserver, 461 skryptów aplikacji w chmurze, instalacja jednym kliknięciem.

Dodaj menu zarządzania.

Najpierw użyjadd_action( ‘admin_menu’, … )Aby zarejestrować nowy element menu zarządzania lub podmenu, użyj funkcji poniżej:mfp_create_admin_menuBędzie dodana strona z podmenią w głównym menu “Ustawienia”.

// 创建插件管理菜单
function mfp_create_admin_menu() {
	add_options_page(
		‘我的插件设置’, // 页面标题
		‘我的插件’,     // 菜单标题
		‘manage_options’, // 权限要求
		‘mfp-settings’,   // 菜单slug
		‘mfp_settings_page_html’ // 用于输出页面内容的回调函数
	);
}
add_action( ‘admin_menu’, ‘mfp_create_admin_menu’ );

Tworzenie strony konfiguracji i polów

Następnie konieczne jest definiowanie funkcji wywoływanej w odpowiedzi (callback function).mfp_settings_page_htmlAby renderować zawartość strony, należy użyć dostępnej API do rejestracji grupy ustawień, jednej opcji oraz konkretnych pol.

// 设置页面的HTML输出
function mfp_settings_page_html() {
	// 检查用户权限
	if ( ! current_user_can( ‘manage_options’ ) ) {
		return;
	}
	?&gt;
	<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
			// 输出设置字段、非ce等
			settings_fields( ‘mfp_options_group’ );
			do_settings_sections( ‘mfp-settings’ );
			submit_button( ‘保存设置’ );
			?>
		<input type="hidden" name="trp-form-language" value="pl"/></form>
	</div>
	‘mfp_field_copyright_text’ )
	);
}
add_action( ‘admin_init’, ‘mfp_settings_init’ );

// 渲染版权文本文档字段
function mfp_field_copyright_text_html() {
	$options = get_option( ‘mfp_options’ );
	$value = $options[‘copyright_text’] ?? ‘默认版权文本’; // PHP 7.0+ 空合并运算符
	?&gt;
	<input type="“text”"
		   id="“mfp_field_copyright_text”"
		   name="“mfp_options[copyright_text]”"
		   value="“NO NUMERIC NOISE KEY" 1000”
		 class="“regular-text”">
	&lt;?php
}

Teraz możesz użyć tego, co mieliśmy wcześniej.mfp_add_copyright_noticeW funkcji używa się…get_option( ‘mfp_options’ )[‘copyright_text’]Udostępnienie tekstów z ustawzeń użytkownika w czasie rzeczywistym w tle pozwala na konfigurację funkcji dodatku.

Podsumowanie.

W tym tekście został szczegółowo opisany całokowity proces tworzenia dodatku funkcjonalnego dla WordPressa od zera. Zaczęliśmy od przygotowania środowiska rozwojowego i stworzenia głównego pliku zawierającego standardowe informacje nagłówkowe, podkreślając przy tym ważność zabezpieczeń. Następnie dokładnie omówiliśmy kluczowe elementy rozwoju dodatków WordPressa – mechanizm hooków, w tym sposoby używania hooków akcji do wykonywania kodu oraz hooków filtrów do modyfikacji danych, a także pokazaliśmy, jak bezpiecznie załadować zasoby frontendowe. Na koniec, za pomocą API dostępnych w WordPressie, stworzyliśmy stronę konfiguracji o profesjonalnym wyglądzie, umożliwiającą użytkownikom dostosowanie funkcji dodatku według własnych potrzeb.

Cały proces rozwoju został przeprowadzony zgodnie z standardami kodowania i najlepszymi praktykami WordPress, wliczając używanie unikalnych prefiksów dla funkcji, walidację i escapeowanie danych, a także przygotowanie podstaw dla obsługi języków różnych (internacjonalizacji). Po opanowaniu tych podstawowych zasad możesz dowolnie rozszerzać funkcje swojego pluginu poprzez kombinację różnych „hooków”, tworzenie własnych tabel w bazie danych, rozwój dodatkowych narzędzi lub pisanie krótkich fragmentów kodu.

FAQ – najczęściej zadawane pytania.

Jak wybrać odpowiedni prefiks dla funkcji i klas w pluginie?

Wszystkie globalne funkcje, klasy, zmienne i stałe w pluginach muszą mieć unikalne prefiksy, aby uniknąć konfliktów nazw z innymi pluginami lub tematami. Prefiks zwykle składa się z skrótu lub nazwy pluginu. Na przykład, jeśli nazwa pluginu to “My First Plugin”, można wybrać prefiks np. „MfP_”.mfp_myfirstplugin_Ważne jest utrzymywanie spójności.

Czemu konieczne jest używanie funkcji `wp_enqueue_script` do dodawania skryptów?

Użyjwp_enqueue_script()wp_enqueue_style()To metoda zalecana oficjalnie przez WordPress. Dzięki niej można poprawnie obsługiwać zależności pomiędzy skryptami (np. jQuery), uniknąć ich powtarzalnego ładowania oraz umożliwić innym wtyczkom lub tematom działanie w tych skryptach.wp_deregister_script()Aby bezpiecznie usunąć lub zastąpić swój skrypt, użyj tej metody bezpośrednio.W przypadku wstawienia tych tagów nie będzie można korzystać z tych zalet zarządzania, a może dojść do konfliktów.

Które są istotne zasady bezpieczeństwa przy tworzeniu dodatków (pluginów)?

Podstawowym zasadą jest: nigdy nie miej zaufania w dane wprowadzone przez użytkownika. Wszystkie dane pochodzące od użytkowników należy sprawdzać i sprawdzać ponownie.$_GET$_POST$_REQUESTMożna sprawdzić, oczyścić i uwolnić dane uzyskane z bazy danych, a potem wykorzystać je przy generowaniu HTML.esc_html()esc_attr()Output do adresu URLesc_url()W zapytach SQL konieczne jest używanie…$wpdb->prepare()Wykonuj zapytania parametryzowane, aby zapobiec atakom typu SQL injection. Ponadto używaj odpowiednich mechanizmów bezpieczeństwa.current_user_can()Sprawdź uprawnienia użytkownika.

Jak dodać mojemu pluginowi wsparcie dla różnych języków (internacjonalizację)?

Najpierw należy poprawnie ustawić informacje w nagłówku pliku rozszerzenia.Text DomainDomain PathA potem, we wszystkich miejscach w kodzie, gdzie występują teksty wymagające tłumaczenia, należy użyć…()Wykonaj tłumaczenie._e()Wykonaj tłumaczenie w formie odwrotnej („echo translation”).( ‘Hello World’, ‘my-first-plugin’ )Na koniec, użyj takiego narzędzia jak Poedit, by skanować kod i wygenerować….potPliki szablonów, przygotowane dla różnych języków..po.moPrzekaż plik do tłumaczenia i umieść go w odpowiednim miejscu./languagesW katalogu.