O czym należy pamiętać podczas tworzenia wtyczki WordPress od podstaw

Opublikowany: 2022-01-02

Wtyczka WordPress to w rzeczywistości pojedynczy plik lub grupa plików, która rozszerza lub poprawia funkcjonalność witryny WordPress.

Każdy nowy programista wie „Jak kodować?”, ale tworząc wtyczkę w WordPressie, programista musi pamiętać o kilku podstawowych wymaganiach dotyczących tworzenia wtyczki WordPress, oprócz jakości kodu, bezpieczeństwa i funkcjonalności.

W tym przewodniku opisano ważne kroki, o których należy pamiętać podczas tworzenia wtyczek WordPress od podstaw.

We wtyczkach WordPress, kluczową rzeczą do zrozumienia są WordPress Hooki, np. akcje i filtry. Hooki pozwalają wtyczkom działać ze zdefiniowaną funkcjonalnością w określonych momentach w ramach funkcji WordPress.

Lista haków akcji : https://codex.wordpress.org/Plugin_API/Action_Reference

 zdefiniuj( 'WP_DEBUG', prawda );
--- Opcja WP_DEBUG została dodana w wersji WordPress 2.3.1.
--- Domyślnie zakłada się, że jest fałszywe. Jednak zwykle jest ustawiony na true w pliku wp-config.php.

-> Dodaj nagłówek informacji o wtyczce do naszego nowo utworzonego pliku w folderze wtyczek.

 /*
Nazwa wtyczki: Typ postu z referencjami
URI wtyczki: https://wordpress.org/plugins/testimonial-post-type/
Opis: Utwórz typy postów z referencjami, to taksonomia i tagi.
Wersja: 1.0
Autor: Elsner Technologies Sp. Sp. z o.o.
URI autora: https://www.elsner.com
Domena tekstowa: referencja-post-type
Ścieżka domeny: /języki
*/

Powiązane : Niedawno uruchomiona wtyczka WordPress Elsnera: Posts Slider Shortcode

–> Wszystkie wtyczki muszą mieć unikalne nazwy funkcji, definicje i nazwy klas.

Zapobiega to konfliktom wtyczki z innymi wtyczkami lub motywami.

-> Nie używaj __ (podwójne podkreślenia), wp_ lub _ (pojedyncze podkreślenie) jako przedrostka.

Są one zarezerwowane dla samego WordPressa. Możesz ich używać w swoich zajęciach, ale nie jako samodzielnej funkcji

-> Proszę zabezpieczyć swoją wtyczkę przed bezpośrednim dostępem do plików.

 if ( ! define( 'ABSPATH' ) ) zakończ; // Zakończ, jeśli uzyskano bezpośredni dostęp

— Możesz uniknąć bezpośredniego dostępu do plików, umieszczając ten kod na górze wszystkich plików php:

–> Dodaj jednorazową wartość do swoich wywołań POST, aby zapobiec nieautoryzowanemu dostępowi.

nonce (liczba użyta raz)

WordPress nonces nie są liczbami, ale hashem składającym się z cyfr i liter. Nie są też używane tylko raz, ale mają ograniczony „żywotność”, po którym wygasają.

Zwykle generujemy taki adres URL, który usuwa post_id 174
http://example.com/wp-admin/post.php?post=123&action=trash

Ten adres URL jest doskonały, ale nie jest bezpieczny. Załóżmy, że atakujący zna identyfikator postów, a następnie osoba atakująca może usunąć posty z tym adresem URL bez Twojej wiedzy.

Dodanie jednokrotności zapobiegnie temu. Na przykład w przypadku użycia jednorazowego adresu URL, który WordPress generuje dla użytkownika, wygląda tak:
http://example.com/wp-admin/post.php?post=123&action=trash&_wpnonce=b192fc4204

 $nonce = wp_create_nonce( 'my-action_trash' );

— To po prostu zwraca samą wartość nonce.

— Ta wartość, którą możesz umieścić w adresie URL, np.

action='http://example.com/wp-admin/post.php?post=123&action=trash&_wpnonce='.$nonce;

— Weryfikowanie jednokrotności przekazanej w adresie URL

 wp_verify_nonce( $_REQUEST['_wpnonce'], 'my-action_trash' );

Powiązane : Jak przesłać swoją wtyczkę do katalogu wtyczek WordPress?

–> Oczyść, ucieknij i zatwierdź swoje połączenia POST

Odkażanie: czyszczenie danych wejściowych użytkownika
Nigdy nie należy umieszczać surowych danych w bazie danych, nawet za pomocą funkcji aktualizacji lub wywołania przygotowanie().

Oczyszczanie danych POST używanych do wykonywania wywołań akcji lub przekierowań adresów URL zmniejszy możliwość wystąpienia luk XSS.

sanitize_text_field($_POST['post_name']);
— Dane można oczyszczać za pomocą powyższej funkcji.
— Za kulisami funkcja wykonuje następujące czynności:
Sprawdza nieprawidłowy kod UTF-8
Konwertuje pojedyncze < znaków na encję
Zdziera wszystkie tagi
Usuń podziały wierszy, tabulatory i dodatkowe spacje
Oktety paskowe
— sanitize_*() klasa funkcji pomocniczych
https://developer.wordpress.org/plugins/security/securing-input/

Zatwierdź: sprawdzanie danych wprowadzonych przez użytkownika
Oprócz odkażania należy sprawdzić poprawność wszystkich połączeń. Jeśli wywołanie $_POST powinno być tylko liczbą, upewnij się, że jest to int(), zanim przekażesz je przez cokolwiek. Za każdym razem, gdy dodajesz dane do bazy, powinny to być prawidłowe dane.

 intval( $_POST['post'] );
--- jeśli $_POST['post']

ma wartość liczbową, zwróci true. Jeśli nie, to fałsz.

Ucieczka: zabezpieczenie wyjścia
Ucieczka polega na zabraniu danych, które już posiadasz, i zabezpieczeniu ich przed udostępnieniem ich użytkownikowi końcowemu.

Ucieczka / rzucanie na wyjściu po prostu usuwa wszelkie niejasności i dodaje przejrzystości.

 <h4> <?php echo esc_html( $tytuł ); ?> </h4>
--- esc_html()

powinien być używany w sytuacjach, gdy element HTML zawiera sekcję danych, których dane wyjściowe mamy.

 esc_html ( ciąg $tekst )

Ucieczka do bloków HTML.

 esc_html_e ( ciąg $tekst )

Wyświetla przetłumaczony tekst, który został zmieniony w celu bezpiecznego użycia w danych wyjściowych HTML.

 esc_html__ ( ciąg $tekst )

Pobierz tłumaczenie $text i wyjdzie z niego do bezpiecznego użycia w danych wyjściowych HTML.

 <img alt="" src="<?php echo esc_url( $picture_url ); ?>
--- esc_url()

powinny być używane w każdym adresie URL, w tym w atrybutach „src” i „href” elementu HTML.

 <?php echo esc_js( $wartość ); ?>
--- esc_js()

jest przeznaczony do wbudowanego JavaScript.

 <ul class="<?php echo esc_attr( $stored_class ); ?>">
--- esc_attr()

jest użyteczny na wszystkim innym, co jest drukowane w atrybucie elementu HTML.

Notatka :-
Sprawdź poniższy link, aby dowiedzieć się, gdzie znajdują się foldery i jak najlepiej do nich zadzwonić
https://codex.wordpress.org/Determining_Plugin_and_Content_Directories

Jeśli to możliwe, zapisz dane w tabelach wp_options.

Ostatecznym celem tego wszystkiego jest zapewnienie, że nieprawidłowe i niezabezpieczone dane nigdy nie będą przetwarzane ani wyświetlane. Wyczyść, sprawdź, ucieknij od wszystkiego. Ponadto nigdy nie ufaj użytkownikom, że zawsze mają dane wejściowe na rozsądnym poziomie.

Powiązane: Jak dostosować stronę logowania WordPress