Persoanele cu WordPress persistate partea 2

În prima parte a acestei serii, am învățat cum să implementăm o notificare de bază de administrare care apare în partea de sus a fiecărei pagini de administrare WordPress. În acest tutorial, vom începe să construim un plugin care să conțină întregul cod de notificare personalizat pentru admin.

Vom începe prin implementarea anunțurilor de administrare standard și le vom folosi ca bază pentru exemple mai flexibile și mai avansate.

Configurarea pluginului nostru

Mai întâi, totuși, să creăm un nou plugin de la zero, pe care îl vom folosi pentru toate notificările de administrare, astfel încât să putem începe să introducem codul.

Voi presupune că aveți deja un site local de dezvoltare WP înființat. Dacă nu, atunci se referă la linkurile din prima parte a acestei serii tutorial.

Creați un nou dosar plugin numit admin_notices interior / Wp-content / plugins /, și apoi creați un admin_notices.php fișier care va fi fișierul plugin principal.

Deschide admin_notices.php în editorul dvs. preferat și adăugați structura plugin-ului de bază:

init ();

Am adăugat un antet de bază plugin, astfel încât WordPress recunoaște plugin-ul nostru. Aceasta este urmată de o clasă care va conține metode pentru a afișa notificările noastre de admin.

Am numit clasa Gwyer_Admin_Notices pentru a încerca să o facă cât mai unică posibil. În acest fel, este mult mai puțin probabil să intrați în conflict cu un nume de clasă existent.

Să începem prin afișarea unei notificări de bază de administrare, apoi adăugați-o pentru ao face mai utilă. Pentru a crea o notificare de administrator, adăugați admin_notices cârlig la init () funcţie:

add_action ('admin_notices', array ($ this, 'test_notice'));

Cârligul include a test_notice funcția de returnare a apelurilor care va fi utilizată pentru a scoate marcajul de avertizare de administrare.

Adăugați următoarea metodă de clasă la Gwyer_Admin_Notices pentru a afișa notificarea administratorului real. Pentru mesaje, vom folosi citate clasice de film din ultimii 100 de ani de filme.

/ ** * Efectuați o notificare de administrare a testului. * / funcția publică test_notice () ?> 

Yoo hoo, lovitură mare de vară.

Activați pluginul pentru a afișa testul.

Să adăugăm, de asemenea, exemple ale celorlalte tipuri de anunțuri de administrare pe care le putem afișa, inclusiv tipul de tip admisibil, adăugând este-fi închise CSS. Adăugați acestea la test_notice () sub notificarea de administrare existentă div:

Toto, am sentimentul că nu mai suntem în Kansas.

M-ai avut la "salut".

Din toate gingiile din toate orașele din toată lumea, ea intră în a mea.

Nimeni nu pune Baby într-un colț.

Aceasta este gama completă de tipuri de note de administrare pe care le putem afișa prin intermediul claselor CSS de bază WordPress. Amintiți-vă, totuși, că notificarea de administrare a permisului va apărea din nou în fiecare încărcare a paginii!

Mențiunea "Dismissible" admin în acest context înseamnă numai pentru pagina curentă. Având anunțuri de administrare persistente nu este foarte flexibil, așa că mai târziu vom examina în mod special diferite moduri în care vă puteți respinge anunțurile de administrator.

Administrator Notificări Cârlige

Până acum, am folosit doar admin_notice cârlig pentru a implementa o notificare de administrator. Există, de fapt, patru căști separate de administrare pe care le puteți utiliza pentru a afișa notificări, dar admin_notice este cel mai frecvent utilizat.

Cele patru cârlige disponibile sunt:

  • admin_notices (utilizate în cele mai multe cazuri)
  • network_admin_notices
  • all_admin_notices*
  • user_admin_notices*

*Nu există în prezent o documentație oficială disponibilă pentru aceste cârlige.

Deci, unde ați folosi de obicei all_admin_notices, user_admin_notices, și network_admin_notices? Și cum diferă de la ele admin_notices?

Am spus anterior că admin_notices cârligul afișează notificări pe toate paginile de admin, dar acest lucru nu este strict adevărat. Dacă te uiți la admin-header.php în core de WordPress, veți vedea asta admin_notices, network_admin_notices, și user_admin_notices se exclud reciproc. Numai asta unu din aceste cârlige incendiare pe o pagină de admin WordPress.

O serie de expresii condiționate evaluează pagina de administrare curentă și declanșează doar una dintre ele în funcție de tipul de pagină de administrare pe care sunteți în prezent.

in primul rand, is_network_admin () verifică dacă vă aflați pe un ecran de administrare a rețelei (de exemplu, orice pagină de administrare bazată pe / Wp-admin / rețea / URL-ul). Dacă da, atunci network_admin_notices incendii cu cârlig.

In caz contrar, is_user_admin () verifică dacă vă aflați pe un ecran de administrator al utilizatorului (de ex., orice pagină de admin pe baza unei adrese de utilizator) / Wp-admin / utilizator / URL-ul). Dacă da, atunci user_admin_notices incendii cu cârlig. 

Și, după cum probabil ați ghicit, dacă ambii is_network_admin () și is_user_admin () returnează apoi falsul admin_notices incendii cu cârlig.

Asta pleacă de la all_admin_notices cârlig. Acest cârlig nu face parte din expresia condiționată discutată mai sus, deci acest cârlig este garantat să apară pe toate paginile de administrare indiferent de ce, inclusiv paginile de administrare a rețelelor multisite.

Pentru a clarifica, pentru orice pagină de administrare WordPress, numai all_admin_notices cârligul este garantat întotdeauna de foc. Din celelalte trei cârlige, numai unu se va declanșa în funcție de pagina de administrare pe care o utilizați în prezent.

Te-aș încuraja să te uiți admin-header.php (spre sfârșitul fișierului) pentru a vedea singuri cum WordPress evaluează când să folosească fiecare cârlig de anunțuri de administrator.

Vom folosi doar admin_notices pe parcursul acestei serii de tutorial, dar s-ar putea să găsiți că aveți nevoie de unele dintre celelalte cârlige din proiectul dvs., deci merită să le verificați.

Afișarea notificărilor de administrator pe paginile specifice

Să ne îndreptăm acum atenția asupra afișării notificărilor de administrare pe anumite pagini. Mai întâi, comentează apelul către ADD_ACTION astfel încât notițele noastre de testare nu mai sunt afișate.

Interior init (), adăugați un nou ADD_ACTION () apelați că vom folosi pentru a afișa o notificare de administrator pe o anumită pagină de administrare.

add_action ('admin_notices', array ($ this, 'specific_admin_page'));

Apoi definiți specific_admin_page () după cum urmează:

/ ** * Efectuați o notificare de administrare pe un anumit ecran de administrare. * / funcția publică specific_admin_page () $ admin_page = get_current_screen (); ?> 

Informații: În prezent suntem pe baza; ?> pagina de administrare.

Salvați modificările și vizualizați orice pagină din administratorul WordPress. Voi încerca pagina principală a tabloului de bord.

După cum puteți vedea, pentru orice pagină de administrare pe care o accesați, numele de bază (de bază) al paginii este afișat în notificarea de administrare.

get_current_screen () funcția returnează a WP_Screen obiect cu detalii despre ecranul de administrare curent. Proprietatea specială în care ne interesează este WP_Screen-> bază, care se evaluează la tipul de bază al ecranului curent. Încercați să încărcați diferite pagini de administrare WordPress pentru a vedea ce valori sunt returnate WP_Screen-> bază.

Putem folosi valoarea de bază pentru a încărca în mod condiționat notificarea de administrare numai pe pagina de bord. Valoarea pe care trebuie să o verificăm este tablou de bord. Să afișăm, de asemenea, o notificare de administrator alternativă dacă nu suntem pe pagina de control tabloul de administrare. Înlocuiți definiția dvs. specific_admin_page () cu:

/ ** * Efectuați o notificare de administrare pe un anumit ecran de administrare. * / funcția publică specific_admin_page () $ admin_page = get_current_screen (); dacă ($ admin_page-> base == "tabloul de bord"):?> 

Am reușit! Bine ați venit în tabloul de bord.

Unde ai mers? Acesta nu este tabloul de bord!

Totul este bine când suntem pe pagina de bord, dar încercați să navigați la orice altă pagină de administrare și să vedeți ce se întâmplă.

Utilizarea acestei abordări simple ne oferă destulă flexibilitate atunci când afișează notificări de administrare pe anumite pagini de administrare. Putem extinde cu ușurință acest lucru în lista albă pe orice număr de pagini de admin pe care doriți să afișăm anunțuri de administrator.

Încă o dată, înlocuiți specific_admin_pages () funcția, de data aceasta cu următorul cod:

/ ** * Efectuați o notificare de administrare pe un anumit ecran de administrare. * / funcția publică specific_admin_page () $ whitelist_admin_pages = array ('dashboard', 'upload', 'edit-comments'); $ admin_page = get_current_screen (); dacă (in_array ($ admin_page-> base, $ whitelist_admin_pages)):?> 

Am reușit! Acesta este 'baza; ?> 'pagina de administrare.

Nu pe dvs. nelly! Această pagină nu este pe lista mea.

În loc să verificăm o singură pagină de administrare, verificăm acum să vedem dacă numele de bază pentru pagina de administrare curentă se află în $ whitelist_admin_pages matrice. Când navigăm la tabloul de bord, în biblioteca media sau în paginile de administrare a comentariilor, vedem notificarea administratorului de succes.

Și când vom vizita orice altă pagină de administrare (care nu este inclusă în matricea noastră albă), vedem o notificare de administrare alternativă.

Ce ar fi să afișezi o notificare de administrator pe o pagină de opțiuni pentru pluginuri? Cum să facem asta? Înainte de a intra în acest lucru, trebuie mai întâi să înființăm o pagină cu opțiuni pentru modulul dummy pentru plugin-ul nostru.

Creați un fișier nou numit plugin-options.php în interiorul admin-Notificări plugin adăugat mai devreme, și adăugați următorul cod:

 

Admin Notificări Plugin

Introduceți un text
init ();

În partea superioară a admin-notices.php (direct deasupra declarației de clasă), includeți clasa de opțiuni plugin în fișierul plugin principal cu:

requ_once (dirname (__ FILE__). /plugin-options.php ');

Nu intru în prea multe detalii cu privire la modul în care se află codul plugin-options.php funcționează așa cum ar putea fi un tutorial întreg pe cont propriu! Dacă doriți o reîmprospătare, aș recomanda să aruncați o privire la pagina WordPress Codex în adăugarea paginilor cu opțiuni de plugin.

Practic, tot ce facem este să adăugăm un nou Notificări Admin subpagină la Setări meniul. În mod opțional, pagina cu opțiuni de plugin conține un singur câmp text la care puteți introduce un șir de caractere. Cand Salvează modificările butonul este apăsat, conținutul câmpului de text este salvat în baza de date WordPress.

Acesta este doar un exemplu de oase goale a unei pagini de setări pentru plugin-uri doar pentru demonstrație. Nu include funcțiile necesare de dezinfectare sau de translație recomandate pentru un plugin de producție destinat eliberării generale.

Mergi la Setări> Notificări administrator pentru a vedea pagina cu opțiunile pluginului.

După cum era de așteptat, anunțul de administrare pe care l-am adăugat anterior a fost afișat pe pagina opțiunilor pluginului. Mesajul de eroare este afișat deoarece pagina opțiunilor pluginului nu este în $ whitelist_admin_pages array din paginile de admin permise. Să rezolvăm asta acum.

Pentru a adăuga pagina de opțiuni la matrice, trebuie să știm numele de bază. Interior specific_admin_page (), modificați notificarea de eroare admin la următoarele:

Nu pe dvs. nelly! Acest 'baza; ?> "nu este pe lista mea.

Încă mai avem aceeași notă de administrator de eroare ca înainte, dar de data aceasta include numele de bază de care avem nevoie, care se dovedește a fi settings_page_admin-avize / plugin-opțiuni. Acesta nu este un nume pe care l-am putea ghici cu ușurință, așa că merită să luăm timpul să-l scoatem!

Adăugați numele de bază la $ whitelist_admin_pages array, care acum ar trebui să arate astfel:

$ whitelist_admin_pages = array ('settings_page_admin-notices / plugin-options', 'tablou de bord', 'încărcare', 'editare-comentarii');

Actualizați pagina opțiunilor pluginului pentru a vedea notificarea actualizată de administrator.

Acum, când știm numele bazei de opțiuni pentru opțiunile pluginului, putem crea cu ușurință o notificare de administrator care se afișează numai pe pagina de administrare. Elimina settings_page_admin-avize / plugin-opțiuni de la $ whitelist_admin_pages array și să comenteze al doilea ADD_ACTION funcția de apel în init (). Apoi adăugați oa treia acțiune pe care o vom folosi pentru pagina noastră de opțiuni pentru plugin-uri, doar pentru notificarea administratorului. Ta init () funcția ar trebui să pară acum:

/ ** * Înregistrați cârligele. * / funcția publică init () // add_action ('admin_notices', array ($ this, 'test_notice')); // add_action ('admin_notices', array ($ this, 'specific_admin_page')); add_action ('admin_notices', array ($ this, 'plugin_admin_notice'));  

Să facem din carne plugin_admin_notice () inversă acum. Adăugați această nouă metodă la Gwyer_Admin_Notices clasă:

/ ** * Efectuați o notificare de administrator pe pagina opțiunilor pluginului. * / funcția publică plugin_admin_notice () $ whitelist_admin_pages = array ('settings_page_admin-notices / plugin-options'); $ admin_page = get_current_screen (); dacă (in_array ($ admin_page-> base, $ whitelist_admin_pages)):?> 

Bine ați venit la pagina pluginului Notificări de administrator!

Acest lucru este foarte asemănător specific_admin_page () cu excepția faptului că am eliminat expresia condiționată. Am adăugat, de asemenea, un buton admisibil adăugând este-fi închise CSS, astfel că și anunțul de administrare poate fi închis și acum.


Încercați să încărcați alte pagini de admin pentru a confirma că notificarea de administrare se afișează numai pe pagina opțiunilor pluginului.

Concluzie

În acest tutorial, am aflat mai multe despre notele de administrare și despre diferitele cârlige disponibile pentru afișarea acestora. De asemenea, am abordat modul de afișare a anunțurilor de administrator numai pe anumite pagini ale administratorului WordPress. Am creat un plugin dedicat care să conțină toate codurile de notificare personalizate ale adminului.

În partea a treia, vom extinde suplimentar plugin-ul prin afișarea modului de a declanșa notificări de administrator când apar anumite evenimente. Amintiți-vă, natura open-source a WordPress ușurează învățarea și extinderea. În acest scop, avem multe de analizat și studiat în piața Envato dacă sunteți curioși.

Apoi, ne vom îndrepta atenția spre a afla cum putem rezolva problema persistentă a notei de administrare, astfel încât să nu reapară când pagina este actualizată. Vom implementa mai multe metode în plugin-ul nostru personalizat pentru a ne permite să facem acest lucru.

Cod