Så langt i denne serien har vi dekket to separate måter å avvise vedvarende WordPress-administrasjonsmeldinger. Vi bygger videre på denne fjerde og siste delen av opplæringsserien ved å se på to mer spesifikke metoder for permanent å avvise dine administrasjonsmeldinger. Vi avrunder ting ved å vise hvordan du lager dine egne tilpassede adminvarseltyper og legger til dekorasjoner som ikoner.
Vi vet allerede hvordan å vise en administrasjonsmelding som kan bli avvist. Alt vi trenger å gjøre er å legge til er-dismissible
CSS klasse til det inneholdende div-elementet. Dette er imidlertid bare midlertidig og vil bare avvise varselet for gjeldende side. Så snart siden oppdateres, vises den igjen.
For å gjøre det permanent avvisbart innebærer mer kode enn vi har sett så langt, men det er ikke så vanskelig å implementere. La oss ta en titt på hva som er involvert, med en oversikt.
Vi bruker et egendefinert alternativ for å lagre visningsstatusen for administrasjonsmeldingen. Ved plugin aktivering, vil dette alternativet bli opprettet / oppdatert og satt til true. Administrasjonsmeldingen vises da bare hvis alternativet for øyeblikket er sant.
Nøkkelen til denne metoden bruker Ajax til å gi oss muligheten til å angi valget når avvisningsknappen klikkes. Når vellykket er satt til false, vil den betingede koden som kontrollerer alternativstatusen mislykkes, og administrasjonsmeldingen blir ikke lenger vist.
La oss begynne med å legge til administrasjonsmeldingen selv, som vil være en vanlig melding om å begynne. I Gwyer_Dismissible_Admin_Notices :: init ()
, legg til en ny ADD_ACTION
anrop:
add_action ('admin_notices', array ($ this, 'dismiss_admin_notice'));
Legg deretter til dismiss_admin_notice ()
tilbakeringingsfunksjon til samme klasse:
offentlig funksjon dismiss_admin_notice () $ whitelist_admin_pages = array ('settings_page_admin-notices / plugin-options'); $ admin_page = get_current_screen (); hvis (in_array ($ admin_page-> base, $ whitelist_admin_pages)):?>Avvis meg, hvis du kan. Ha ha ha!
Dette legger til en adminmelding som bare vises på administrasjonspluggen for plugin og ligner på det vi har sett i tidligere opplæringsprogrammer. Den eneste lille forskjellen her er at vi også har lagt til et CSS-ID i administrasjonsmeldingen
div
container. Dette vil bli brukt til å spesifikt målrette administrasjonen vi er interessert i.Vi må legge til JavaScript-kode for å gjøre Ajax-anropet, så legg til en
js
mappe i rotenadmin-meldinger
plugin mappe og innsiden opprette en fil som heteradmin-notices.js
. Legg til kode i den nye filen for å teste at den lastes riktig ved å sende en konsollmelding.jQuery (dokument) .ready (funksjon ($) console.log ('admin-notices.js loaded!'););I
Gwyer_Plugin_Options :: init ()
, legg til en nyADD_ACTION
ring for å enqueue vår skriptfil:add_action ('admin_enqueue_scripts', array ($ this, 'enqueue_scripts'));Vi vil bare at denne JavaScript-filen skal lastes på plugin-opsjonssiden, så vi trenger en måte å betinget enqueue den på. Vi kan gjøre dette ved å sjekke hvilken admin side vi for øyeblikket er på for å se om det er vår side for pluginalternativer.
Vi kan få et håndtak til vår plugin options side ved å lagre retur verdien av
add_options_page ()
i en klasse eiendom. Vi hadde ikke behov for denne verdien tidligere, så vi ringte nettoppadd_options_page ()
uten å lagre returverdi.Legg til en klasse eiendom til
Gwyer_Plugin_Options
:beskyttet $ plugin_options_page;Så, i
create_admin_menu_page ()
, Bruk denne nye eiendommen til å lagre håndtaket til vår plugin-valgside:offentlig funksjon create_admin_menu_page () $ this-> plugin_options_page = add_options_page ('Admin notices', 'Admin notices', 'manage_options', __FILE__, array ($ dette, 'render_options_page'));Vi kan endelig enqueue vår JavaScript-fil slik at den bare lastes på plugin-opsjonssiden:
offentlig funksjon 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');Hvis alt gikk bra så ser du en admin-notices.js lastet! melding utgitt til nettleserkonsollen.
Oppdater JavaScript-koden i
admin-notices.php
til følgende:jQuery (dokument) .ready (funksjon ($) $ (dokument) .on ('klikk', '# an1 .notice-dismiss', funksjon (hendelse) data = action: 'display_dismissible_admin_notice',; $; post (ajaxurl, data, funksjon (respons) console.log (respons, 'DONE!'););););Her lytter vi etter et klikkhendelse på
AN1
CSS ID vi la til vår admin melding tidligere. Så snart den er klikket, blir en Ajax-forespørsel avfyrt. La oss håndtere denne forespørselen neste.I
Gwyer_Dismissible_Admin_Notices :: init ()
, legg til en nyADD_ACTION
anrop:add_action ('wp_ajax_display_dismissible_admin_notice', array (& $ dette, 'display_dismissible_admin_notice'));Dette vil kjøre tilbakeringingsfunksjonen en gang til
display_dismissible_admin_notice
Ajax-forespørselen brenner. Husk at dette opprinnelig ble definert somdata.action
eiendom i vår Ajax-forespørsel.Legg nå til
display_dismissible_admin_notice
tilbakeringingsfunksjon tilGwyer_Dismissible_Admin_Notices
:offentlig funksjon display_dismissible_admin_notice () echo "Behandling av Ajax-forespørsel ..."; wp_die ();Lagre endringene, last inn siden for pluginalternativer, og klikk på administrasjonsavvisnings-knappen for å se Ajax-forespørselen i handling!
Hvis forespørselen var vellykket, vil du se en Behandling av Ajax-forespørsel ... GJELDT! melding som vises i nettleserkonsollen.
Det endelige stykket av puslespillet er å skape et tilpasset alternativ som i utgangspunktet er satt til sant, men som da blir satt til falsk når avvisningsknappen klikkes. Når siden Plugin-alternativer lastes, vises kun administrasjonsmeldingen dersom den egendefinerte tilleggsverdien er sant.
I
Gwyer_Dismissible_Admin_Notices :: init ()
, Legg til et nytt anrop tilregister_activation_hook ()
:register_activation_hook (plugin_dir_path (__FILE__). 'admin-notices.php', array ($ dette, 'create_custom_option'));Og legg til
create_custom_option
tilbakeringingsfunksjon til klassen:offentlig funksjon create_custom_option () update_option ('gwyer-dismiss', true);Nå, når plugin er aktivert, kalles et tilpasset alternativ
gwyer-avvise
er opprettet og satt tilekte
.Oppdater
display_dismissible_admin_notice ()
for å oppdatere vårt tilpassede alternativ når Ajax-forespørselen brenner:offentlig funksjon display_dismissible_admin_notice () update_option ('gwyer-dismiss', false); wp_die ();Nå er alt som er igjen å gjøre, oppdatert
dismiss_admin_notice ()
for å sjekke verdien av det egendefinerte alternativet og bare gi administrasjonsmeldingen hvis den er satt til sann.offentlig funksjon dismiss_admin_notice () $ whitelist_admin_pages = array ('settings_page_admin-notices / plugin-options'); $ admin_page = get_current_screen (); $ display_status = get_option ('gwyer-dismiss'); hvis (in_array ($ admin_page-> base, $ whitelist_admin_pages) && $ display_status):?>Avvis meg, hvis du kan. Ha ha ha!
Deaktiver og reaktiver pluggen for å teste koden vi har lagt til. Gå til Plugin Options-siden, avvis administrasjonsmeldingen, og oppdater siden. Innkallingen bør ikke lenger være synlig. Jippi!
Fordi det egendefinerte alternativet er satt til sant hver gang pluginet er aktivert, kan du gjenta trinnene ovenfor for å teste den avvisbare administrasjonen så mange ganger du vil.
For å holde ting enkelt, var dette et bare-bein eksempel på bruk av en Ajax-forespørsel for å angi den egendefinerte adminopplysningsalternativet. I praksis vil du ønske å bruke en nonce (number used once) -verdi for å validere Ajax-forespørselen som et minimums sikkerhetstiltak.
Dette var mye arbeid for å bare permanent avvise en administrasjon, men den endelige effekten fungerer bra og er noe du kan bruke til en god effekt i dine egne plugins.
Tilpasset handling Administrasjonsoppsigelse Avvisning
Det er på tide å se på en litt annen metode for å avvise administrasjonsmeldinger nå. Dette er en natt type administrasjonsmelding som vises på alle admin skjermbilder og kan ikke avvises før noen handling er utført.
Merk: Bruk denne metoden med forsiktighet, eller du vil risikere å forandre pluginbrukerne dine veldig raskt!
Den spesifikke handlingen vi vil fokusere på i vårt eksempel, vil være å vise en administrasjonsvarsel til et nødvendig plugin eller en liste over plugins er installert og aktivert.
I motsetning til den tidligere metoden der vi måtte hoppe gjennom hoops for å få en administrasjonsvarsel å bli permanent avvisbar, er løsningen for denne metoden forfriskende enkel!
Først må du kommentere alle funksjonsanropene i
Gwyer_Dismissible_Admin_Notices :: init ()
. Deretter legger du til en nyADD_ACTION ()
funksjon:add_action ('admin_notices', array ($ dette, 'install_plugin_to_dismiss_admin_notice'));Og definer tilbakeringingen som følger:
offentlig funksjon install_plugin_to_dismiss_admin_notice () if (! is_plugin_active ('hello-dolly / hello.php')):?>Vennligst installer og aktiver Hei Dolly plugg inn.
Det er alt der er til det! Jeg fortalte deg at det var enkelt, gjorde jeg ikke?
Det eneste vi gjorde annerledes denne gangen var å bruke
is_plugin_active ()
WordPress-funksjonen for å teste om Hello Dolly-pluginet er installert og aktivert. Hvis ikke,is_plugin_active ()
vil returnere falsk, og vår admin melding vil bli vist.Prøv å aktivere Hello Dolly-pluginet for å bekrefte at administrasjonsmeldingen går bort.
Dette fungerer bra for enkelt plugins, men hva om du vil minne brukerne om å aktivere flere plugins? I stedet for hardkodning i Hello Dolly-plugininformasjonen kan vi lage en matrise for å hvitliste de nødvendige pluginene.
Erstatte
install_plugin_to_dismiss_admin_notice ()
med:offentlig funksjon 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 as $ required_plugin_name => $ required_plugin_path) hvis (! is_plugin_active ($ required_plugin_path)) array_push ($ requires_activating, $ required_plugin_name); hvis (! tomt ($ requires_activating)):?>Vennligst installer og aktiver følgende plugin: .
De nødvendige pluginene lagres nå i en matrise som er slått over for å sjekke om hvert plugin er aktivert. For et plugin som ikke er aktivt, blir navnet lagt til i en
$ requires_activating
array som sendes ut via administrasjonen som en kommaseparert liste over nødvendige pluginnavn.Egendefinerte administrasjonsmeldinger
Før vi er ferdige, la oss ha litt moro ved å lage våre egne tilpassede adminvarseltyper. La oss se hvordan du legger til noen egendefinerte admin varseltyper av vår egen. Nå vil du være fullt kjent med de fire innebygde administrasjonene som WordPress gir som standard, men det er ikke så vanskelig å komme opp med noen av våre egne.
For det første, kommentere alle funksjonssamtaler i
Gwyer_Dismissible_Admin_Notices :: init ()
så vi starter på en ren skifer.Vi må legge til CSS for våre egendefinerte admin varslingstyper, så legg til en i mappen for root plugin
css
mappe, og inne lage en fil som heteradmin-notices.css
. For å bekrefte det på alle administrasjonssidene, legg til en nyADD_ACTION
ring innGwyer_Plugin_Options :: init ()
.add_action ('admin_enqueue_scripts', array ($ this, 'enqueue_styles'));Så, for
enqueue_styles ()
tilbakeringing, legg til denne metoden i samme klasse:offentlig funksjon enqueue_styles () wp_enqueue_style ('gwyer-admin-notice-css', plugin_dir_url (__FILE__). 'css / admin-notices.css');La oss nå sette opp en ny metode for å sende ut våre tilpassede adminmeldinger. I
Gwyer_Admin_Notices :: init ()
, Legg til:add_action ('admin_notices', array ($ this, 'custom_admin_notices'));Legg deretter til et tilbakering for å vise en rekke tilpassede adminmeldinger:
/ ** * Utdata tilpassede adminmeldinger. * / offentlig funksjon custom_admin_notices () ?>Houston, jeg tror definitivt vi har et problem!
Gratulerer, du har vunnet Admin-brukeren av årets pris!
Nå er dette en god ide.
La oss koble til!
Bli med Neo og følg den hvite kaninen. Hvis du ser ham, gi ham denne gulrot. Kaninen som er, ikke Neo!
Til slutt legger du til CSS til
admin-notices.css
å stilte våre tilpassede admin merknader:.varsel-stor-feil grense: 3px solid rød; -webkit-transform: rotateZ (-1deg); -ms-transformere: rotateZ (-1deg); transformere: rotateZ (-1deg); .notice-admin-user-award border-left: 5px solid lilla; .notice-admin-user-award p: før font: normal 24px / 1 'dashicons'; innhold: "\ f313"; farge: lilla; .notice-light-bulb border-right: 5px solid # e2e224; .notice-light-pære p: før font: normal 22px / 1 'dashicons'; innhold: "\ f339"; farge: # e6e610; .notice-social-media border-left: 5px solid # 1da25f; polstring-bunn: 5px; .notice-social-media p polstring-bunn: 0; margin-bunn: 4px; .notice-social media: etter font: normal 22px / 1 'dashicons'; innhold: "\ f301 \ f304 \ f462"; farge: # 888; .notice-neo border-right: 10px solid orangered; border-left: 10px solid orangered; .notice-neo p: før font: normal 22px / 1 'dashicons'; innhold: "\ f511"; farge: orangered;Når du har lagret endringene, laster du inn en administratorside for å se våre tilpassede adminmeldinger.
Å dømme etter resultatene, er det sannsynligvis en god ide å bruke egendefinerte adminmeldinger sparsomt, ellers vil du risikere at de ser garish.
Jeg vil ikke gå inn i detaljer om den egendefinerte CSS som brukes. Det er bare litt moro, og det meste av stylingen er ganske selvforklarende.
Vi brukte dashicon-ikoner for våre tilpassede adminmeldinger for enkelhets skyld som de er tilgjengelige i WordPress-administrasjonen som standard. Men du kan importere og bruke noen ikoner du liker for ekstra dekorasjon.
Prøv koden for deg selv
Alle koden fra denne opplæringsserien er pakket inn i et WordPress-plugin for å laste ned. Ta en titt på koden, utvide den, og implementer nye måter å vise (og avvise) administrasjonsmeldinger. Pass på å gi meg beskjed i kommentarene hvis du lager noe kul! Jeg vil gjerne se hva du kommer med.
Konklusjon
Takk for at du kom med meg i denne firedelte opplæringsserien. Forhåpentligvis vil du nå ha mye mer tillit til hvordan du implementerer administrasjonsmeldinger i dine egne prosjekter.
Vi har dekket mange forskjellige aspekter av WordPress-administrasjonsmeldinger, inkludert flere måter å permanent avvise dem, som ikke er mulig uten tilpasset kode.
Å lage egne tilpassede admin notiser er ganske enkelt også, men i praksis vil du bruke dem sparsomt i dine egne prosjekter. Mesteparten av tiden er det best å holde til standard WordPress-stiler for en konsistent brukeropplevelse.
WordPress har en utrolig aktiv økonomi. Det er temaer, plugins, biblioteker og mange andre produkter som hjelper deg med å bygge opp ditt nettsted og prosjekt. Plattformens åpen kildekode gjør det også til et flott alternativ som du kan forbedre programmeringsevnen din. Uansett kan du se hva vi har tilgjengelig på Envato Market.
Og ikke glem å laste ned pluginet og leke med koden. Det er en fin måte å bli kjent med hvordan alle brikkene passer sammen. Og vennligst gi meg beskjed om dine tanker på opplæringen via kommentarene nedenfor.