Zrób to sam: WordPress sam Ci powie, że coś trzeba zaktualizować!
WordPress to najpopularniejszy system zarządzania treścią (CMS) na świecie. Jego ogromna społeczność oraz otwarta architektura sprawiają, że można go niemal dowolnie rozbudowywać. Jednym z najpotężniejszych narzędzi są wtyczki, które dodają nowe funkcje bez konieczności modyfikowania głównego kodu systemu.
Wprowadzenie: Dlaczego warto pisać własne wtyczki do WordPressa
W tym artykule pokażemy, jak krok po kroku stworzyć prostą, ale bardzo praktyczną wtyczkę – WP Update Alert. Jej zadaniem będzie automatyczne wykrywanie dostępnych aktualizacji wtyczek, motywów oraz WordPressa, a następnie wysyłanie powiadomienia e-mailowego do administratora strony.
Ta funkcjonalność jest szczególnie przydatna w sytuacji, gdy zarządzasz wieloma witrynami, albo nie logujesz się do zaplecza regularnie – a chcesz mieć pewność, że żadna aktualizacja nie zostanie pominięta.
Wiadomo – są gotowe wtyczki do zarządzania aktualizacjami w WordPressie. Ale ten projekt powstał z zupełnie innego powodu: żeby pokazać krok po kroku, jak samodzielnie stworzyć wtyczkę od podstaw. Jeśli chcesz nauczyć się, jak działają CRON-y, jak tworzyć własne panele ustawień, wysyłać e-maile z WordPressa i bezpiecznie logować działania – ten poradnik jest dla Ciebie. Efektem będzie lekka, praktyczna wtyczka WP Update Alert, a po drodze zdobędziesz solidne podstawy pisania własnych rozszerzeń do WordPressa.
Co znajdziesz w tym poradniku?
W artykule nauczysz się:
- Jak stworzyć strukturę wtyczki WordPressa
- Jak zarejestrować własny panel ustawień w menu administracyjnym
- Jak użyć WordPress CRON do zaplanowanych zadań
- Jak pobierać dane o dostępnych aktualizacjach
- Jak wysłać e-mail z wykorzystaniem funkcji
wp_mail()
- Jak prowadzić logi powiadomień i zapobiegać dublowaniu informacji
Poradnik jest napisany tak, aby był zrozumiały również dla osób początkujących, ale zawiera też praktyczne elementy, które docenią bardziej zaawansowani użytkownicy.
Jak zaplanować wtyczkę do WordPressa – architektura i założenia WP Update Alert
Zanim przystąpimy do pisania kodu, warto dokładnie zaplanować, jak ma działać nasza wtyczka. Dzięki temu nie tylko szybciej osiągniemy efekt, ale też unikniemy błędów związanych z bezpieczeństwem, wydajnością i późniejszym rozwojem.
Wtyczka WP Update Alert będzie pełniła funkcję powiadamiacza – każdego dnia automatycznie sprawdzi, czy na stronie dostępne są aktualizacje WordPressa, motywów lub wtyczek. Jeśli tak – wyśle na wskazany adres e-mail szczegółowe powiadomienie z listą dostępnych aktualizacji.
Poniżej przedstawiamy pełny plan działania wtyczki, który zrealizujemy krok po kroku w dalszej części poradnika.
Główne funkcje wtyczki WP Update Alert
- Panel ustawień w kokpicie WordPressa
- Umożliwia wprowadzenie adresu e-mail, na który mają być wysyłane powiadomienia
- Pozwala włączyć lub wyłączyć automatyczne wysyłanie e-maili
- Wyświetla log ostatnich powiadomień
- Codzienne sprawdzanie dostępnych aktualizacji
- Wtyczka wykorzystuje mechanizm CRON w WordPressie (
wp_schedule_event
) - Sprawdza, czy dostępne są aktualizacje dla:
- zainstalowanych wtyczek
- zainstalowanych motywów
- silnika WordPress (core)
- Wtyczka wykorzystuje mechanizm CRON w WordPressie (
- Wysyłka e-maila tylko raz na daną sytuację
- Jeśli zestaw dostępnych aktualizacji się nie zmienił – wiadomość nie zostanie ponownie wysłana
- Wtyczka generuje skrót (hash) aktualnego stanu i porównuje go z poprzednim
- Logowanie powiadomień
- Wtyczka zapisuje historię ostatnich wysyłek
- Administrator może podejrzeć datę i zakres wysłanych powiadomień
- Przycisk do wysyłki testowej
- Umożliwia ręczne wysłanie testowego e-maila na podany adres
- Pomaga upewnić się, że konfiguracja WordPressa umożliwia wysyłanie wiadomości
Schemat działania wtyczki krok po kroku
- Użytkownik instaluje i aktywuje wtyczkę
- W panelu Narzędzia > WP Update Alert wprowadza adres e-mail i aktywuje powiadomienia
- Codziennie uruchamiane jest automatyczne zadanie (CRON)
- Jeśli system wykryje aktualizacje – wysyłany jest e-mail z listą zmian
- Wysyłka zostaje zapisana w logu – zawiera datę i liczbę elementów do aktualizacji
Jak stworzyć plik wtyczki WordPress – struktura WP Update Alert
Tworzenie wtyczki w WordPressie zaczyna się od jednego pliku PHP. Może być ich więcej w większych projektach, ale do naszego celu – czyli stworzenia praktycznej, lekkiej wtyczki powiadamiającej o aktualizacjach – wystarczy jeden plik.
Nazwiemy go wp-update-alert.php
.
Gdzie umieścić plik wtyczki?
- Otwórz katalog swojej strony WordPress, np. przez FTP lub menedżer plików na serwerze.
- Przejdź do katalogu:
wp-content/plugins/
- Stwórz nowy folder o nazwie:
wp-update-alert
- W tym folderze stwórz plik:
wp-update-alert.php
Nagłówek wtyczki – rejestracja w WordPressie
Każda wtyczka WordPressa musi zawierać tzw. nagłówek – czyli komentarz na górze pliku z podstawowymi informacjami. To dzięki niemu WordPress rozpoznaje plik jako wtyczkę.
Wklej poniższy kod do pliku wp-update-alert.php
:
<?php
/*
Plugin Name: WP Update Alert
Description: Wtyczka WordPress, która wysyła e-mail z informacją o dostępnych aktualizacjach wtyczek, motywów i samego WordPressa.
Version: 1.0
Author: Twoje Imię lub Nazwa
*/
Po zapisaniu pliku i odświeżeniu panelu WordPress, w zakładce Wtyczki pojawi się nowa pozycja: WP Update Alert. Możesz ją aktywować jednym kliknięciem.
Co dalej?
Po poprawnej aktywacji wtyczki możemy przejść do kolejnych etapów:
- dodania panelu ustawień w kokpicie,
- zapisania opcji (adres e-mail i aktywacja powiadomień),
- skonfigurowania harmonogramu (CRON),
- i oczywiście – wysyłania e-maila, gdy pojawi się coś do zaktualizowania.
W następnym kroku pokażę, jak stworzyć interfejs ustawień w panelu „Narzędzia” WordPressa, gdzie użytkownik będzie mógł wpisać adres e-mail i włączyć powiadomienia.
Jak dodać własny panel ustawień w WordPressie – WP Update Alert w zakładce „Narzędzia”
Aby użytkownik mógł zarządzać ustawieniami naszej wtyczki bez edycji kodu, dodamy prosty interfejs w kokpicie WordPressa. Najlepszym miejscem dla tej funkcjonalności będzie menu „Narzędzia”, ponieważ nie jest to element codziennej obsługi, a bardziej techniczne wsparcie administracyjne.
Dodawanie własnej podstrony w menu „Narzędzia”
WordPress udostępnia funkcję add_management_page()
, dzięki której możemy łatwo dodać własną stronę ustawień do menu Narzędzia. Umieść poniższy kod w pliku wp-update-alert.php
, tuż pod nagłówkiem wtyczki:
// Dodanie strony w Narzędziach
add_action('admin_menu', function() {
add_management_page(
'WP Update Alert', // Tytuł strony
'WP Update Alert', // Nazwa w menu
'manage_options', // Uprawnienia
'wp-update-alert', // Slug
'wpua_settings_page_render' // Callback – co ma się wyświetlić
);
});
Formularz ustawień wtyczki – e-mail i aktywacja
Teraz zdefiniujmy funkcję wpua_settings_page_render()
, która wyświetli formularz z polem e-mail i checkboxem do włączania powiadomień. Dodaj poniższy kod:
function wpua_settings_page_render() {
if (isset($_POST['wpua_save'])) {
update_option('wpua_email', sanitize_email($_POST['wpua_email']));
update_option('wpua_enabled', isset($_POST['wpua_enabled']) ? '1' : '0');
echo '<div class="updated"><p>Ustawienia zapisane.</p></div>';
}
$email = get_option('wpua_email', '');
$enabled = get_option('wpua_enabled', '0');
echo '<div class="wrap"><h1>WP Update Alert – Ustawienia</h1>';
echo '<form method="post">';
echo '<table class="form-table">';
echo '<tr><th scope="row">Adres e-mail</th>';
echo '<td><input type="email" name="wpua_email" value="' . esc_attr($email) . '" class="regular-text" required /></td></tr>';
echo '<tr><th scope="row">Wysyłaj powiadomienia</th>';
echo '<td><input type="checkbox" name="wpua_enabled" value="1" ' . checked('1', $enabled, false) . ' /></td></tr>';
echo '</table>';
echo '<p><input type="submit" name="wpua_save" value="Zapisz ustawienia" class="button button-primary" /></p>';
echo '</form></div>';
}
Co robi ten kod?
- Tworzy nową podstronę w panelu WordPress (Narzędzia > WP Update Alert)
- Pozwala użytkownikowi:
- wpisać adres e-mail do powiadomień,
- włączyć lub wyłączyć wysyłanie wiadomości,
- Dane są zapisywane w bazie danych za pomocą
update_option()
Jak dodać automatyczne sprawdzanie aktualizacji w WordPressie – użycie CRON w WP Update Alert
Aby nasza wtyczka codziennie sprawdzała dostępne aktualizacje i wysyłała powiadomienie tylko wtedy, gdy coś się zmieniło, musimy skorzystać z systemu zadań cyklicznych WordPressa, czyli tzw. WordPress CRON (wp_cron).
Co to jest WordPress CRON?
CRON w WordPressie to mechanizm wykonywania zadań o określonym czasie, ale nie jest to klasyczny systemowy CRON. W WordPressie każde zaplanowane zdarzenie uruchamiane jest przy okazji odwiedzin strony przez użytkownika lub bota.
Dzięki temu możemy np. raz dziennie sprawdzać aktualizacje i podjąć konkretne działanie – w naszym przypadku wysłać e-mail.
Rejestracja zadania CRON
W pliku wp-update-alert.php
, dodaj następujący kod (najlepiej pod kodem formularza ustawień):
// Harmonogram przy aktywacji
register_activation_hook(__FILE__, function() {
if (!wp_next_scheduled('wpua_check_updates_event')) {
wp_schedule_event(time(), 'daily', 'wpua_check_updates_event');
}
});
// Usuwanie CRON-a przy dezaktywacji
register_deactivation_hook(__FILE__, function() {
wp_clear_scheduled_hook('wpua_check_updates_event');
});
Ten kod:
- Przy aktywacji ustawia cykliczne wydarzenie (
wp_schedule_event
) uruchamiane raz dziennie - Przy dezaktywacji usuwa zaplanowane zdarzenie, by nie zostawało w systemie
Dodanie funkcji do CRON-a
Teraz musimy przypisać funkcję, która wykona się codziennie. To ona będzie:
- pobierać dane o dostępnych aktualizacjach,
- generować ich listę,
- porównywać z poprzednim stanem,
- i w razie potrzeby – wysyłać e-mail.
Dodaj poniższy kod:
add_action('wpua_check_updates_event', 'wpua_check_for_updates');
function wpua_check_for_updates() {
if (get_option('wpua_enabled', '0') !== '1') return;
include_once ABSPATH . 'wp-admin/includes/update.php';
include_once ABSPATH . 'wp-admin/includes/plugin.php';
include_once ABSPATH . 'wp-admin/includes/theme.php';
wp_update_plugins();
wp_update_themes();
$plugin_updates = get_plugin_updates();
$theme_updates = get_theme_updates();
$core_updates = get_core_updates();
$updates_summary = [];
$hash_data = '';
if (!empty($plugin_updates)) {
foreach ($plugin_updates as $plugin => $data) {
$updates_summary['plugins'][] = $data->Name . ' (' . $data->Version . ' → ' . $data->update->new_version . ')';
$hash_data .= $plugin . $data->update->new_version;
}
}
if (!empty($theme_updates)) {
foreach ($theme_updates as $theme) {
$updates_summary['themes'][] = $theme->get('Name') . ' (' . $theme->get('Version') . ' → ' . $theme->update['new_version'] . ')';
$hash_data .= $theme->get_stylesheet() . $theme->update['new_version'];
}
}
if (!empty($core_updates) && isset($core_updates[0]->version)) {
$updates_summary['core'] = 'WordPress (' . get_bloginfo('version') . ' → ' . $core_updates[0]->version . ')';
$hash_data .= 'core' . $core_updates[0]->version;
}
if (empty($updates_summary)) return;
$current_hash = md5($hash_data);
$last_hash = get_option('wpua_last_sent_hash');
if ($current_hash === $last_hash) return;
wpua_send_update_email($updates_summary);
update_option('wpua_last_sent_hash', $current_hash);
wpua_log_notification($updates_summary);
}
Co robi ten kod?
- Pobiera aktualizacje dla: wtyczek, motywów i WordPressa
- Buduje z nich zbiorczą listę
- Tworzy skrót (hash) tej listy i porównuje z poprzednią
- Jeśli hash się zmienił – wysyła e-mail i zapisuje log
W następnym punkcie dodamy kod funkcji wpua_send_update_email()
oraz wpua_log_notification()
, czyli zajmiemy się wysyłką wiadomości e-mail i zapisywaniem logów powiadomień.
Jak wysyłać powiadomienia e-mail z WordPressa i prowadzić logi – WP Update Alert
Po sprawdzeniu dostępnych aktualizacji i stwierdzeniu, że ich zestaw się zmienił, nasza wtyczka musi wykonać dwie rzeczy:
- Wysłać wiadomość e-mail z listą aktualizacji
- Zalogować fakt, że taki e-mail został wysłany
Funkcja wysyłająca e-mail z powiadomieniem
Dodaj do pliku wp-update-alert.php
funkcję wpua_send_update_email()
, która przygotowuje i wysyła wiadomość:
function wpua_send_update_email($updates_summary) {
$email = get_option('wpua_email', '');
if (empty($email)) return;
$subject = 'Dostępne aktualizacje na stronie ' . get_bloginfo('name');
$body = "Wykryto dostępne aktualizacje:\n\n";
if (!empty($updates_summary['plugins'])) {
$body .= "Wtyczki:\n";
foreach ($updates_summary['plugins'] as $item) {
$body .= "- {$item}\n";
}
$body .= "\n";
}
if (!empty($updates_summary['themes'])) {
$body .= "Motywy:\n";
foreach ($updates_summary['themes'] as $item) {
$body .= "- {$item}\n";
}
$body .= "\n";
}
if (!empty($updates_summary['core'])) {
$body .= "WordPress:\n- {$updates_summary['core']}\n\n";
}
$body .= "Zaloguj się do panelu administracyjnego, aby przeprowadzić aktualizację: " . admin_url();
wp_mail($email, $subject, $body);
}
Ta funkcja tworzy czytelną wiadomość tekstową, zawiera listę zmian i link do zaplecza WordPressa.
Funkcja zapisująca log powiadomień
Dodaj również funkcję wpua_log_notification()
– będzie ona przechowywać historię ostatnich wysyłek (maksymalnie 10):
function wpua_log_notification($updates_summary) {
$log = get_option('wpua_log', []);
$summary_text = '';
if (!empty($updates_summary['plugins'])) {
$summary_text .= count($updates_summary['plugins']) . ' wtyczek, ';
}
if (!empty($updates_summary['themes'])) {
$summary_text .= count($updates_summary['themes']) . ' motywów, ';
}
if (!empty($updates_summary['core'])) {
$summary_text .= 'WordPress core';
}
$log[] = [
'date' => current_time('mysql'),
'summary' => trim($summary_text, ', ')
];
if (count($log) > 10) {
array_shift($log); // usuwamy najstarszy wpis
}
update_option('wpua_log', $log);
}
Gdzie pokazać logi?
Wcześniej, w funkcji wpua_settings_page_render()
, możemy dodać sekcję wyświetlającą log wysyłek:
$log = get_option('wpua_log', []);
echo '<h2>Log powiadomień</h2>';
if (!empty($log)) {
echo '<ul>';
foreach (array_reverse($log) as $entry) {
echo '<li><strong>' . esc_html($entry['date']) . '</strong>: ' . esc_html($entry['summary']) . '</li>';
}
echo '</ul>';
} else {
echo '<p>Brak zapisanych powiadomień.</p>';
}
Co zyskaliśmy?
- Pełną automatyzację wysyłki maili
- Zabezpieczenie przed wysyłką duplikatów
- Prosty system logowania, który daje administratorowi wgląd w to, co się działo
W kolejnym – ostatnim – kroku dodamy funkcję wysyłki testowego maila z poziomu panelu ustawień, aby użytkownik mógł upewnić się, że wszystko działa.
Jak dodać przycisk do wysyłania testowego e-maila w WordPressie – WP Update Alert
Dodamy teraz do formularza ustawień wtyczki przycisk „Wyślij testowego maila”. Po kliknięciu wtyczka wyśle wiadomość na wskazany adres i wyświetli informację o sukcesie lub błędzie.
Modyfikacja formularza w panelu ustawień
W funkcji wpua_settings_page_render()
, zaraz po formularzu zapisu, dodajemy drugi przycisk i jego obsługę:
if (isset($_POST['wpua_send_test'])) {
wpua_send_test_email();
}
...
echo '<p>';
echo '<input type="submit" name="wpua_save" value="Zapisz ustawienia" class="button button-primary" />';
echo ' ';
echo '<input type="submit" name="wpua_send_test" value="Wyślij testowego maila" class="button" />';
echo '</p>';
Funkcja wysyłająca testowego maila
Dodaj tę funkcję do pliku, najlepiej pod wpua_log_notification()
:
function wpua_send_test_email() {
$email = get_option('wpua_email', '');
if (empty($email)) {
echo '<div class="error"><p>Nie podano adresu e-mail.</p></div>';
return;
}
$subject = 'Testowy e-mail z WP Update Alert';
$body = "To jest testowa wiadomość wysłana z wtyczki WP Update Alert.\n\n" .
"Jeśli ją otrzymałeś, oznacza to, że konfiguracja poczty w WordPressie działa poprawnie.\n\n" .
"Adres strony: " . site_url();
$success = wp_mail($email, $subject, $body);
if ($success) {
echo '<div class="updated"><p>Wysłano testowego maila na adres: ' . esc_html($email) . '</p></div>';
} else {
echo '<div class="error"><p>Nie udało się wysłać testowego maila. Sprawdź konfigurację poczty.</p></div>';
}
}
Co daje użytkownikowi ten test?
- Szybko sprawdza, czy WordPress ma poprawnie ustawione wysyłanie wiadomości
- Upewnia się, że wskazany adres e-mail odbiera alerty
- Może przetestować wtyczkę bez czekania na realne aktualizacje
Wtyczka jest kompletna, stabilna i gotowa do publikacji.
Podsumowanie: Własna wtyczka do WordPressa – WP Update Alert w praktyce
W tym artykule pokazaliśmy krok po kroku, jak samodzielnie stworzyć funkcjonalną wtyczkę do WordPressa, która spełnia realną potrzebę – informowanie administratora o dostępnych aktualizacjach.
Omówiliśmy cały proces:
- Jak zaplanować architekturę wtyczki i zdefiniować funkcjonalności
- Jak zarejestrować własną stronę ustawień w kokpicie WordPressa
- Jak wykorzystać mechanizm CRON do cyklicznych zadań
- Jak sprawdzać dostępne aktualizacje wtyczek, motywów i WordPressa
- Jak wysyłać e-mail tylko wtedy, gdy coś rzeczywiście się zmieni
- Jak prowadzić prosty log wysłanych powiadomień
- Jak dodać przycisk do testowej wysyłki e-maila
To pełnoprawna, gotowa do wdrożenia wtyczka – użyteczna zarówno dla pojedynczych blogów, jak i sieci stron, gdzie aktualizacje mają kluczowe znaczenie.
Co dalej? Pomysły na rozwój wtyczki
Wtyczka działa w podstawowej formie, ale z łatwością możesz ją rozbudować o:
- Wsparcie dla webhooków (np. Discord, Slack, Teams) – zamiast lub oprócz e-maila
- Powiadomienia przez REST API – np. do aplikacji mobilnej
- Zaawansowane filtrowanie aktualizacji – np. tylko krytyczne
- Eksport logów do CSV
- Wersję multisite z centralnym zarządzaniem
Dlaczego warto pisać własne wtyczki?
Tworząc własne wtyczki WordPressa:
- Rozwijasz umiejętności PHP, HTML i architektury WordPressa
- Zyskujesz pełną kontrolę nad funkcjonalnością i bezpieczeństwem
- Możesz dzielić się rozwiązaniami z innymi lub je sprzedawać
To najlepszy sposób, żeby zrozumieć „od środka” jak działa WordPress – i wejść w temat zawodowo lub półzawodowo.