Până acum, în această serie, am abordat două moduri diferite de a elimina notificările persistente de la WordPress. Vom construi acest lucru în această a patra și ultima parte a seriei de tutorial, examinând două metode mai specifice pentru a respinge definitiv anunțurile de administrator. Vom schimba lucrurile, arătând cum să creați propriile tipuri de notificări personalizate de admin și să adăugați decorațiuni, cum ar fi pictogramele.
Știm deja cum să afișăm o notificare de administrator care poate fi respinsă. Tot ce trebuie să facem este să adăugăm este-fi închise
CSS la elementul div care conține. Cu toate acestea, aceasta este doar temporară și va duce la respingerea notificării pentru pagina curentă. Imediat ce pagina se reîncarcă, reapare din nou.
Pentru a face acest lucru permanent, este nevoie de mai mult cod decât am văzut până acum, dar nu este prea dificil de implementat. Să aruncăm o privire la ceea ce este implicat, începând cu o imagine de ansamblu.
Vom utiliza o opțiune personalizată pentru a stoca starea afișării notificării noastre de admin. La activarea pluginului, această opțiune va fi creată / actualizată și setată la true. Notă de administrare se va afișa numai dacă opțiunea este în prezent adevărată.
Cheia acestei metode utilizează Ajax pentru a ne permite să setăm opțiunea la falsă când se face clic pe butonul de concediere. Odată setată cu succes la codul fals, codul condiționat care verifică starea opțiunii va eșua și notificarea de administrare nu va mai fi afișată.
Să începem prin adăugarea notificării de administrare în sine, care va fi o notificare clară pentru a începe. În Gwyer_Dismissible_Admin_Notices :: init ()
, adăugați un nou ADD_ACTION
apel:
add_action ('admin_notices', array ($ this, 'dismiss_admin_notice'));
Apoi adăugați dismiss_admin_notice ()
funcția de apel invers la aceeași clasă:
funcția publică dismiss_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)):?>Dă-mi voie, dacă poți. Ha ha ha!
Aceasta adaugă o notă de administrator care se afișează numai în pagina de admin plugin și este foarte asemănătoare cu ceea ce am văzut în tutorialele anterioare. Singura ușoară diferență este că am adăugat, de asemenea, un cod CSS la anunțul de administrare
div
container. Aceasta va fi utilizată pentru a viza în mod specific anunțul de administrare de care suntem interesați.Va trebui să adăugăm cod JavaScript pentru a face apelul Ajax, așa că adăugați a
js
folder în rădăcinăadmin-Notificări
dosarul plugin și interiorul crea un fișier numitadmin-notices.js
. Adăugați codul la noul fișier pentru a testa dacă se încarcă corect prin afișarea unui mesaj consola.jQuery (document) .ready (funcția ($) console.log ('admin-notices.js încărcat!'););În
Gwyer_Plugin_Options :: init ()
, adăugați un nouADD_ACTION
sunați pentru a închide fișierul de script:add_action ('admin_enqueue_scripts', array ($ this, 'enqueue_scripts'));Vrem doar ca acest fisier JavaScript sa fie incarcat pe pagina de optiuni plugin, asa ca avem nevoie de o modalitate de a incalzi in mod conditionat aceasta. Putem face acest lucru prin verificarea paginii de administrare pe care o vedem în prezent pentru a vedea dacă aceasta este pagina noastră de opțiuni pentru pluginuri.
Putem obține un mâner în pagina opțiunilor pluginului, stocând valoarea returnată din
add_options_page ()
într-o proprietate de clasă. Nu aveam nevoie de această valoare anterior, așa că am sunatadd_options_page ()
fără a se păstra valoarea returnată.Adăugați o proprietate de clasă la
Gwyer_Plugin_Options
:protejat $ plugin_options_page;Apoi în
create_admin_menu_page ()
, utilizați această nouă proprietate pentru a stoca mânerul în pagina opțiunilor plugin:funcția publică create_admin_menu_page () $ this-> plugin_options_page = add_options_page ("Notificări de administrator", "Notificări de administrator", "manage_options", __FILE__, array ($ this, 'render_options_page'));În final, putem încorpora fișierul nostru JavaScript, astfel încât acesta să se încarce numai în pagina opțiunilor pluginului:
funcția publică enqueue_scripts ($ hook) if ($ hook! = $ this-> plugin_options_page) return; wp_enqueue_script ('gwyer-admin-notice-js', plugin_dir_url (__FILE__). 'js / admin-notices.js');Dacă totul a mers bine, veți vedea unul admin-notices.js încărcat! mesaj expediat în consola browserului.
Actualizați codul JavaScript în
admin-notices.php
la următoarele:jQuery (document) .ready (funcția ($) $ (document) .on ('click', '# an1 .notice-dismiss', funcția (event) data = action_dismissible_admin_notice '; post (ajaxurl, date, funcție (răspuns) console.log (răspuns, 'DONE!');))););Aici, ascultăm pentru un eveniment de clic pe
aN1
CSS ID-ul pe care l-am adăugat mai devreme la notificarea administratorului nostru. De îndată ce se face clic, o solicitare Ajax este concediată. Să rezolvăm cererea următoare.În
Gwyer_Dismissible_Admin_Notices :: init ()
, adăugați un nouADD_ACTION
apel:add_action ('wp_ajax_display_dismissible_admin_notice', array (& $ this, 'display_dismissible_admin_notice'));Aceasta va rula funcția de apel invers odată
display_dismissible_admin_notice
Ajax cere focuri. Amintiți-vă că inițial aceasta a fost definită cadata.action
proprietate în cererea noastră Ajax.Acum adaugati
display_dismissible_admin_notice
funcția de apel invers laGwyer_Dismissible_Admin_Notices
:funcția publică display_dismissible_admin_notice () echo "Prelucrarea solicitării Ajax ..."; wp_die ();Salvați modificările, reîncărcați pagina opțiunilor pluginului și dați clic pe butonul de anulare a anunțului de administrare pentru a vedea solicitarea Ajax în acțiune!
Dacă cererea a avut succes, veți vedea o Procesarea cererii Ajax ... S-a făcut! mesaj afișat în consola browserului.
Ultima piesă a puzzle-ului este de a crea o opțiune personalizată inițial setată la adevărat, dar care este apoi setată la falsă când se face clic pe butonul de concediere. Apoi, când se încarcă pagina cu opțiunile pluginului, notificarea de administrare se afișează numai dacă valoarea opțiunii personalizate este adevărată.
În
Gwyer_Dismissible_Admin_Notices :: init ()
, adăugați un al doilea apel laregister_activation_hook ()
:register_activation_hook (plugin_dir_path (__FILE__). 'admin-notices.php', array ($ this, 'create_custom_option'));Și adăugați
create_custom_option
funcția de apel invers la clasă:funcția publică create_custom_option () update_option ('gwyer-dismiss', true);Acum, când plugin-ul este activat, este apelată o opțiune personalizată
gwyer-respingerea
este creat și setat laAdevărat
.Actualizați
display_dismissible_admin_notice ()
pentru a actualiza opțiunea personalizată atunci când cererea Ajax se declanșează:funcția publică display_dismissible_admin_notice () update_option ('gwyer-dismiss', false); wp_die ();Acum tot ce trebuie să faceți este actualizarea
dismiss_admin_notice ()
pentru a verifica valoarea opțiunii personalizate și pentru a face notificarea administratorului numai dacă este setată la true.funcția publică dismiss_admin_notice () $ whitelist_admin_pages = array ('settings_page_admin-notices / plugin-options'); $ admin_page = get_current_screen (); $ display_status = get_option ("gwyer-dismiss"); dacă (in_array ($ admin_page-> base, $ whitelist_admin_pages) && $ display_status):?>Dă-mi voie, dacă poți. Ha ha ha!
Dezactivați și reactivați pluginul pentru a testa codul pe care l-am adăugat. Accesați pagina opțiunilor pluginului, respingeți notificarea de administrator și actualizați pagina. Anunțul nu mai trebuie să fie vizibil. ura!
Deoarece opțiunea personalizată este setată la adevărat de fiecare dată când plugin-ul este activat, puteți să repetați pașii de mai sus pentru a testa notificarea de administrator care nu este permisă de câte ori doriți.
Pentru a păstra lucrurile simple, a fost un exemplu de oase goale de a folosi o solicitare Ajax pentru a seta opțiunea de notificare personalizată. În practică, doriți să utilizați o valoare nonce (număr utilizată o dată) pentru a valida solicitarea Ajax ca măsură de securitate minimă.
A fost o mulțime de lucruri pentru a respinge definitiv doar o notificare de administrator, dar efectul final funcționează bine și este ceva ce puteți utiliza pentru a avea efect bun în propriile dvs. pluginuri.
Decizia de administrare a acțiunii personalizate
Este timpul să te uiți la o metodă ușor diferită pentru a elimina notificările de admin acum. Acesta este un tip de anunț de administrator care apare pe toate ecranele de administrare și nu poate fi respins până când nu a fost efectuată nicio acțiune.
Notă: Utilizați această metodă cu precauție sau riscați să vă alienați pe utilizatorii plugin-ului foarte repede!
Acțiunea specifică pe care o vom concentra în exemplul nostru va fi afișarea unei notificări de administrator până când un plugin sau o listă de pluginuri au fost instalate și activate.
Spre deosebire de metoda anterioară în care trebuia să trecem prin cercuri pentru a obține o notificare de administrator care să fie permanent dezactivată, soluția pentru această metodă este în mod repetat simplă!
Mai întâi, comentează toate apelurile pentru funcții din
Gwyer_Dismissible_Admin_Notices :: init ()
. Apoi, adăugați un nouADD_ACTION ()
funcţie:add_action ('admin_notices', array ($ this, 'install_plugin_to_dismiss_admin_notice'));Și definiți apelul după cum urmează:
funcția publică install_plugin_to_dismiss_admin_notice () if (! is_plugin_active ('hello-dolly / hello.php')):?>Instalați și activați Bună Dolly conecteaza.
Cam despre asta e! Ți-am spus că e simplu, nu-i așa??
Singurul lucru pe care l-am făcut în mod diferit de data aceasta a fost să-l folosim
is_plugin_active ()
Funcția WordPress pentru a testa dacă pluginul Hello Dolly este instalat și activat. Dacă nu,is_plugin_active ()
se va întoarce false și se va afișa nota noastră de administrare.Încercați să activați pluginul Hello Dolly pentru a verifica dacă anunțul de administrator nu mai funcționează.
Acest lucru funcționează bine pentru pluginurile individuale, dar dacă ați dori să le reamintiți utilizatorilor să activeze mai multe pluginuri? În loc de hard-coding în Hello Dolly plugin-ul de informații, am putea crea o matrice pentru a listei alb-adiționale noastre necesare.
A inlocui
install_plugin_to_dismiss_admin_notice ()
cu:funcția publică install_plugin_to_dismiss_admin_notice () $ required_plugins = array ('Hello Dolly' => 'hello-dolly / hello.php', 'Akismet' => 'akismet / akismet.php'); $ requires_activating = array (); foreach ($ required_plugins ca $ required_plugin_name => $ required_plugin_path) dacă (! is_plugin_active ($ required_plugin_path)) array_push ($ requires_activating, $ required_plugin_name); dacă (! empty ($ requires_activating)):?>Instalați și activați următoarele pluginuri: .
Pluginurile necesare sunt acum stocate într-o matrice care este bifată pentru a verifica dacă fiecare plugin a fost activat. Pentru orice plugin care nu este activ în prezent, numele este adăugat la a
$ requires_activating
array care este afișat prin notificarea de administrare ca o listă de nume de plugin necesare separată prin virgulă.Notificări personalizate de administrator
Înainte de a termina, hai să ne distrăm, creând propriile noastre tipuri de anunțuri personalizate. Să vedem cum să adăugăm niște tipuri personalizate de anunțuri personalizate. Până acum, veți fi pe deplin familiarizați cu cele patru notițe de administrator încorporate în WordPress, care sunt furnizate în mod prestabilit, dar nu este atât de greu să veniți cu niște proprii.
În primul rând, totuși, comentați toate apelurile pentru funcții în
Gwyer_Dismissible_Admin_Notices :: init ()
așa că începem pe o artă curată.Va trebui să adăugăm CSS pentru tipurile de notificări personalizate, astfel încât în dosarul rădăcină de plugin adăugați o
css
dosarul și interiorul crea un fișier numitadmin-notices.css
. Pentru al enumera pe toate paginile admin, adăugați un nouADD_ACTION
sunăGwyer_Plugin_Options :: init ()
.add_action ('admin_enqueue_scripts', array ($ this, 'enqueue_styles'));Apoi, pentru
enqueue_styles ()
apel invers, adăugați această metodă în aceeași clasă:funcția publică enqueue_styles () wp_enqueue_style ('gwyer-admin-notice-css', plugin_dir_url (__FILE__). 'css / admin-notices.css');Acum, să organizăm o nouă metodă de afișare a notivelor de administrator personalizat. În
Gwyer_Admin_Notices :: init ()
, adăuga:add_action ('admin_notices', array ($ this, 'custom_admin_notices'));Apoi adăugați un apel invers pentru a afișa o serie de notificări personalizate de administrator:
/ ** * Emite notificări personalizate ale administratorului. * / funcția publică custom_admin_notices () ?>Houston, cu siguranță cred că avem o problemă!
Felicitări, ați câștigat premiul pentru utilizatorul Admin al anului!
Acum este o idee minunată.
Să ne conectăm!
Alăturați-vă lui Neo și urmați iepurele alb. Dacă îl vezi, dă-i morcovul ăsta. Iepure nu este Neo!
În cele din urmă, adăugați CSS la
admin-notices.css
la stilul anunțurilor personalizate ale administratorului:.notă-mare-eroare graniță: 3px solid roșu; -webkit-transform: rotateZ (-1deg); -ms-transform: rotateZ (-1deg); transform: rotateZ (-1deg); .notice-admin-user-award granița-stânga: 5px violet solid; .notice-admin-user-award p: înainte de font: normal 24px / 1 'dashicons'; conținut: "\ f313"; culoare: violet; .notice-bec-bec frontieră-dreapta: 5px solid # e2e224; .notice-bec-p bulb: înainte de font: normal 22px / 1 'dashicons'; conținut: "\ f339"; culoare: # e6e610; .notice-social-media frontieră-stânga: 5px solid # 1da25f; padding-bottom: 5px; .notice-social-media p padding-bottom: 0; margin-bottom: 4px; .notice-social-media: după font: normal 22px / 1 'dashicons'; conținut: "\ f301 \ f304 \ f462"; culoare: # 888; .notice-neo granița-dreapta: 10px solid portocaliu; frontal-stânga: 10 pixeli portocalii; .notice-neo p: înainte de font: normal 22px / 1 'dashicons'; conținut: "\ f511"; culoare: portocaliu;După ce salvați modificările, încărcați orice pagină de administrare pentru a vedea notificările personalizate de administrator.
Judecând după rezultate, probabil că este o idee bună să folosiți cu ușurință notificări de administrare personalizate, altfel veți avea riscul ca aceștia să caute.
Nu voi intra în detalii despre CSS personalizat folosit. Este doar pentru un pic de distracție, și cea mai mare parte a stilului este destul de auto-explicative.
Am folosit iconițe pentru fonturile dashicons pentru notificările personalizate ale administratorilor, deoarece acestea sunt disponibile în mod implicit în administratorul WordPress. Dar ați putea importa și utiliza orice icoane pe care le doriți pentru decorare suplimentară.
Încercați codul pentru dvs.
Tot codul din această serie de tutorial a fost înfășurat într-un plugin WordPress pe care îl puteți descărca. Priviți codul, extindeți-l și implementați noi moduri de afișare (și respingere) a anunțurilor de administrator. Asigurați-vă că lasă-mă să știu în comentariile dacă creați ceva cool! Mi-ar plăcea să văd ce vă aduceți.
Concluzie
Vă mulțumim că v-ați alăturat în această serie de tutori din patru părți. Sperăm că acum veți avea mult mai multă încredere în modul în care implementați anunțurile de administrare în proiectele proprii.
Am acoperit multe aspecte diferite ale anunțurilor de administrator ale WordPress, inclusiv mai multe moduri de a le elimina definitiv, ceea ce nu este posibil fără un cod personalizat.
Crearea propriilor anunțuri de administrare personalizate este destul de ușoară, dar, în practică, doriți să le folosiți cu ușurință în proiectele proprii. De cele mai multe ori este cel mai bine să păstrați stilurile WordPress implicite pentru o experiență consistentă a utilizatorului.
WordPress are o economie incredibil de activă. Există teme, pluginuri, biblioteci și multe alte produse care vă ajută să vă construiți site-ul și proiectul. Natura open-source a platformei o face de asemenea o opțiune excelentă din care vă puteți îmbunătăți abilitățile de programare. Indiferent de situație, puteți vedea ce avem la dispoziție în piața Envato.
Și nu uitați să descărcați pluginul și să jucați cu codul. Este o modalitate foarte bună de a vă familiariza mai bine cu modul în care toate piesele se potrivesc împreună. Și vă rog să-mi spuneți gândurile pe tutorial prin comentariile de mai jos.