Jak stworzyć swoją wtyczkę? – Szkielet pluginu

5 min czytania
Jak stworzyć swoją wtyczkę? – Szkielet pluginu

Jak już prawdopodobnie wiesz, wtyczki (z angielskiego pluginy) pozwalają na dodanie kolejnych funkcjonalności do Twojej instancji WordPress. Na pierwszy ogień bierzemy szkielet pluginu, czyli:

  • folder i główny plik wtyczki, a konkretnie ich nazwy,
  • nagłówek – czyli wszelkie niezbędne informacje na temat autora, wersji, opis i inne, które są wyświetlane w panelu WP,
  • podstawowe hooki, które pozwolą włączyć i wyłączyć wtyczkę,
  • odinstalowanie wtyczki za pomocą hook’a i pliku uninstall.

Nazwa wtyczki jej folderu i pliku

Pierwszym krokiem jest utworzenie folderu, w którym umieścimy pliki z kodem naszej wtyczki. W tym celu musimy udać się do folderu /wp-content/plugins/, a w nim utworzyć folder z unikalną nazwą naszej wtyczki.

Dobrym zwyczajem jest utworzenie unikalnej nazwy, z Twoim autorskim przedrostkiem. Wszystko po to, by w momencie udostępnienia wtyczki w repozytorium, użytkownik nie narobił sobie problemów, pobierając Twoją wtyczkę, która nadpisze pliki innej wtyczki.

Gdy utworzyłeś już folder na swój plugin, to musisz utworzyć w nim plik, którego nazwa jest identyczna jak nazwa folderu, ale z rozszerzeniem .php. Na przykład tworzymy folder towp-first, a w nim plik towp-first.php. W efekcie otrzymujemy taką ścieżkę do naszego pliku: /wp-content/plugins/towp-first/towp-first.php.

Spokojnie, nazwa plików nie jest brana pod uwagę przy nazewnictwie Twojego pluginu, który będzie się wyświetlać w panelu CMS. Zobaczmy, co za to odpowiada.

Nagłówek wtyczki – informacje o autorze, opis, licencja i wymogi

Nagłówek pluginu informuje WordPressa, jaką nazwę ma nasza wtyczka, jaki jest jej opis, jakie autor postawił wymogi odnośnie wersji WordPress czy PHP. Służy do tego składnia PHPDoc, która jest adaptacją Javadoc dla języka PHP – jej podstawowym celem jest dokumentowanie aplikacji napisanej w tym języku programowania.

Podstawowa składnia, wymagana do wyświetlania wtyczki na liście w panelu CMS to tylko nazwa i wygląda następująco:

/**
 * Plugin Name: Ten od WordPressa
 */

Pełne informacje na temat wtyczki, autorów, licencji, adresu aktualizacji i inne zawrzemy w taki sposób:

/**
 * Plugin Name:       Ten od WordPressa - First
 * Plugin URI:        https://tenodwordpressa.pl/first
 * Description:       Podstawy tworzenia wtyczek.
 * Version:           1.0.0
 * Requires at least: 5.2
 * Requires PHP:      7.4
 * Author:            Ten od WordPressa
 * Author URI:        https://tenodwordpressa.pl/
 * License:           GPL v2 or later
 * License URI:       https://www.gnu.org/licenses/gpl-2.0.html
 * Update URI:        https://tenodwordpressa.pl/first
 * Text Domain:       ten-od-wp
 * Domain Path:       /tenodwp
 */

Pełne znaczenie poszczególnych wierszy znajdziesz w oficjalnej dokumentacji twórców (developer.wordpress.org), jednakże większość z nich jest dość intuicyjna.

Podstawowe hooki potrzebne do włączenia wtyczki

By włączyć lub wyłączyć nasz plugin wymagane są funkcje połączone z dwiema kotwicami (z ang. hook):

  • activation_hook – kotwica odpowiedzialna za wszelkie działania związane z uruchomieniem wtyczki.
  • deactviation_hook – kotwica odpowiedzialna za wszelkie działania związane z wyłączeniem wtyczki.

Pierwszym krokiem jest zdefiniowanie tego, co ma robić nasza wtyczka w momencie włączenia np.: tworzenie tabeli, utworzenie taksonomii, dodanie opcji do tabeli options lub jakieś inne działanie. W tym celu przygotowujemy funkcję, która zawiera określone działanie, a następnie łączymy ją z danym hookiem.

function towp_setup_post_type() {
    // Rejestracja własnego typu postów "portfolio"
    register_post_type( 'portfolio', ['public' => true ] ); 
} 
add_action( 'init', 'towp_setup_post_type' );
 
 
/**
 * Aktywacja pluginu
 */
function towp_activate() { 
    // Wykonanie wcześniej zdefiniowanej funkcji.
    towp_setup_post_type(); 
    // Zresetowanie permalinków.
    flush_rewrite_rules(); 
}
// Podłączenie funkcji aktywacyjnej do hooka
register_activation_hook( __FILE__, 'towp_activate' );

Natomiast, by wyłączyć wtyczkę, musimy odwrócić działanie funkcji aktywacyjnej i cofnąć wprowadzone zmiany, w tym celu definiujemy kolejną funkcję, która to za nas wykona i podłączamy ją do kotwicy dezaktywującej plugin.

/**
 * Dezaktywacja pluginu
 */
function towp_deactivate() {
    // Wyrejestrowanie dodanego typu postów "portfolio".
    unregister_post_type( 'portfolio' );
    // Zresetowanie permalinków
    flush_rewrite_rules();
}
register_deactivation_hook( __FILE__, 'towp_deactivate' );

Odinstalowanie wtyczki za pomocą kotwicy i pliku

Usuwanie wtyczki powinno być odróżnione od jej wyłączenia. My na tak wczesnym etapie tego nie zrobiliśmy, ale warto podać przykład takiego rozróżnienia:

  • działania wykonywane w ramach wyłączenia wtyczki: wyczyszczenie cache, zresetowanie permalinków, wyrejestrowanie typu wpisów.
  • działania wykonywane w ramach usunięcia wtyczki: usunięcie utworzonej tabeli, usunięcie dodanych danych do tabeli options.

By odinstalować naszą wtyczkę, możemy wykorzystać dwie metody.

  • za pomocą kotwicy uninstall_hook poprzez zdefiniowanie funkcji, która podłączymy do hooka,
  • za pomocą pliku uninstall.php, który tworzymy w folderze z pluginem.

Pamiętaj, by nie testować usuwania, bez wcześniejszego utworzenia kopii Twoich plików, bo je stracisz!

Ten od WordPressa – który się zdziwił gdy wszystko zniknęło…

Pierwsza opcja jest Ci już znana z poprzednich etapów:

function towp_uninstall(){
// kod naszej funkcji
}
register_uninstall_hook(__FILE__, 'towp_uninstall');

Druga opcja to utworzenie pliku uninstall.php i zamieszczenie konkretnych działań, które się wykonają po przejściu do niego (należy pamiętać o zabezpieczeniu pliku przed usunięciem bez kliknięcia przycisk „usuń” z panelu CMS):

// zabezpieczenie przed wywołaniem innym niż przez WordPress
if (!defined('WP_UNINSTALL_PLUGIN')) {
    die;
}
$option_name = 'towp_option';
delete_option($option_name);
 
// usunięcie przykładowej tabeli
global $wpdb;
$wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}towp");

Podsumowanie

Jeśli wykonałeś wszystkie kroki, tak jak je opisałem to Twoja wtyczka powinna być wyświetlana na liście w WP, może być włączana i wyłączana. Jednakże pamiętaj, że jej usunięcie spowoduje, że opracowane przez Ciebie pliki znikną. W kolejnych wpisach zbudujemy już działający plugin, który dodaje pewne funkcjonalności do WordPress!

13 marca, 2022 | Ten od WordPressa | WordPress Developer