Lucruri de care trebuie să țineți cont atunci când creați un plugin WordPress de la zero
Publicat: 2022-01-02Un plugin WordPress este de fapt un singur fișier sau un grup de fișiere care extinde sau îmbunătățește funcționalitatea unui site WordPress.
Fiecare dezvoltator nou știe „Cum se codifică?”, Dar atunci când creează un plugin în WordPress, dezvoltatorul trebuie să-și amintească unele cerințe de bază pentru a crea pluginul WordPress, pe lângă calitatea codului, securitatea și funcționalitatea.
Acest ghid descrie pași importanți de care trebuie să țineți cont atunci când creați pluginuri WordPress de la zero.
În pluginurile WordPress, un lucru critic de înțeles sunt WordPress Hooks, de exemplu acțiunile și filtrele. Cârligele permit pluginurilor să ruleze cu o funcționalitate definită la momente specifice în cadrul funcțiilor WordPress.
Lista de cârlige de acțiune: https://codex.wordpress.org/Plugin_API/Action_Reference
define('WP_DEBUG', true); --- Opțiunea WP_DEBUG a fost adăugată în versiunea WordPress 2.3.1. --- În mod implicit, se presupune că este fals. Cu toate acestea, de obicei este setat la adevărat în fișierul wp-config.php.
–> Adăugați un antet de informații specifice pentru plugin la fișierul nostru nou creat în folderul Plugin.
/* Nume plugin: Tipul postului de mărturie URI plugin: https://wordpress.org/plugins/testimonial-post-type/ Descriere: creați un tip de postare de mărturie, este Taxonomie și etichete. Versiune: 1.0 Autor: Elsner Technologies Pvt. Ltd. URI autor: https://www.elsner.com Domeniul text: testimonial-post-type Calea domeniului: /limbi */
Înrudit: Pluginul WordPress lansat recent de Elsner: Postează Slider Shortcode
–> Toate pluginurile trebuie să aibă nume de funcții unice, definiții și nume de clasă.
Acest lucru împiedică pluginul dvs. să intre în conflict cu alte plugin-uri sau teme.
–> Nu folosiți __ (liniere de subliniere duble), wp_ sau _ (liniuță de subliniere unică) ca prefix.
Acestea sunt rezervate pentru WordPress în sine. Le puteți folosi în cadrul cursurilor, dar nu ca funcție autonomă
–> Vă rugăm să vă asigurați pluginul de accesul direct la fișier.
if ( ! definit( 'ABSPATH' ) ) ieșire; // Ieșire dacă este accesat direct
— Puteți evita accesul direct la fișiere punând acest cod în partea de sus a tuturor fișierelor php:
–> Vă rugăm să adăugați un nonce la apelurile dvs. POST pentru a preveni accesul neautorizat.
nonce (număr folosit o dată)
Nonce-urile WordPress nu sunt numere, ci sunt un hash format din cifre și litere. Nici nu sunt folosite o singură dată, dar au o „durată de viață” limitată după care expiră.
În mod normal, generăm o adresă URL ca aceasta care șterge post_id 174
http://example.com/wp-admin/post.php?post=123&action=trash
Această adresă URL este perfectă, dar nu sigură. Să presupunem că un atacator știe id-ul postărilor, apoi atacatorul poate șterge postările cu această adresă URL fără știrea ta.
Adăugarea unui nonce va preveni acest lucru. De exemplu, atunci când utilizați un nonce, adresa URL pe care WordPress o generează pentru utilizator arată astfel:
http://example.com/wp-admin/post.php?post=123&action=trash&_wpnonce=b192fc4204
$nonce = wp_create_nonce('my-action_trash');— Aceasta returnează pur și simplu valoarea nonce în sine.
— Această valoare o puteți pune într-o adresă URL ca
action='http://example.com/wp-admin/post.php?post=123&action=trash&_wpnonce='.$nonce;
— Verificarea unui nonce care este transmis în URL
wp_verify_nonce( $_REQUEST['_wpnonce'], 'my-action_trash' );Înrudit: Cum să trimiteți pluginul în directorul de pluginuri WordPress?

–> Vă rugăm să dezinfectați, să evadați și să vă validați apelurile POST
Sanitize : Curățare intrarea utilizatorului
Nu trebuie să aveți niciodată date brute introduse în baza de date, nici măcar printr-o funcție de actualizare sau cu un apel prepare().
Dezinfectarea datelor POST atunci când sunt folosite pentru a efectua apeluri de acțiune sau redirecționări URL va reduce posibilitatea apariției vulnerabilităților XSS.
sanitize_text_field($_POST['post_name']);
— Datele pot fi igienizate folosind funcția de mai sus.
— În culise, funcția face lucrurile menționate mai jos:
Verifică dacă UTF-8 este invalid
Convertește un singur < caractere în entitate
Îndepărtează toate etichetele
Eliminați întreruperile de linie, filele și spațiul alb suplimentar
Strip octeți
— sanitize_*() clasa de funcții de ajutor
https://developer.wordpress.org/plugins/security/securing-input/
Validare: se verifică intrarea utilizatorului
Pe lângă igienizare, ar trebui să vă validați toate apelurile. Dacă un apel $_POST ar trebui să fie doar un număr, asigurați-vă că este un int() înainte de a-l trece prin orice. De fiecare dată când adăugați date în baza de date, acestea ar trebui să fie datele potrivite.
intval( $_POST['post'] ); --- dacă $_POST['post']
are o valoare numerică, va returna adevărat. Dacă nu este, atunci fals.
Escape: Securizarea ieșirii
Evadarea înseamnă să luați datele pe care le aveți deja și să le asigurați înainte de a le reda pentru utilizatorul final.
Evadarea/transformarea la ieșire elimină orice ambiguitate și adaugă la claritate.
<h4> <?php echo esc_html( $titlu); ?> </h4> --- esc_html()
ar trebui să fie folosit în momentele în care elementul HTML include o secțiune de date a cărei ieșire o avem.
esc_html ( șir $text )Escape pentru blocuri HTML.
esc_html_e ( șir $text )Afișați textul tradus care a fost eliminat pentru a fi utilizat în siguranță în ieșirea HTML.
esc_html__ ( șir $text )Preluați traducerea $text și o scapă pentru o utilizare sigură în ieșirea HTML.
<img alt="" src="<?php echo esc_url( $picture_url ); ?>
--- esc_url()ar trebui să fie utilizat pe fiecare URL, inclusiv pe cele din atributele „src” și „href” ale unui element HTML.
<?php echo esc_js( $valoare ); ?> --- esc_js()
este destinat pentru Javascript inline.
<ul class="<?php echo esc_attr( $stored_class ); ?>">
--- esc_attr()este utilizabil pe orice altceva care este imprimat într-un atribut al elementului HTML.
Notă :-
Vă rugăm să verificați linkul de mai jos pentru a înțelege unde sunt folderele și cum să le apelați cel mai bine
https://codex.wordpress.org/Determining_Plugin_and_Content_Directories
Dacă este posibil, salvați datele în tabelele wp_options.
Scopul concludent al tuturor acestor lucruri este de a asigura că datele invalide și nesigure nu vor fi procesate sau afișate niciodată. Curățați, verificați, scăpați de tot. De asemenea, nu puneți niciodată încredere în utilizatori pentru a avea întotdeauna date de intrare corecte.
Înrudit: Cum să personalizați pagina de conectare WordPress
