În acest moment, am învățat de ce contează API-ul Setări, am învățat totul despre secțiuni, câmpuri și setări și chiar am creat o temă Sandbox pe care o folosim pentru a dezvolta funcționalitatea pe măsură ce explorăm API-ul.
În acest articol, vom examina modul în care putem interfața cu sistemul de meniuri WordPress. Este important să rețineți că aceasta nu este de fapt o parte din API-ul Settings, dar este atât de strâns legată încât ar trebui să ne familiarizăm cu modul în care o folosiți.
Pe măsură ce temele și / sau pluginurile noastre devin mai complexe, trebuie să cunoaștem toate modurile diferite pe care le putem include în Tabloul de bord WordPress. În acest articol, vom analiza diferitele funcții ale meniului WordPress, când să le folosim, când să le evităm și situațiile în care fiecare funcție se potrivește cel mai bine.
WordPress oferă patru modalități diferite de a include propriile noastre meniuri. Mai jos, vom arunca o privire asupra fiecărui meniu, parametrii pe care îi acceptă fiecare și exemplifică codul pentru modul de utilizare a acestora pe parcursul proiectelor. Ne propunem să dezvoltăm o înțelegere clară a modului în care funcționează API, deoarece poate pune bazele muncii noastre viitoare.
Paginile de meniu se referă la elementele de meniu pe care le vedeți la prima conectare la WordPress. Acestea sunt opțiunile disponibile în meniul din stânga care pot conține o listă de pagini de submeniu.
Pentru a introduce pagina dvs. de meniu în tabloul de bord WordPress, utilizați funcția add_menu_page.
Vom examina într-un moment un exemplu practic, dar mai întâi să analizăm funcția - acceptă șapte argumente (cinci obligatorii, două opționale):
Să aruncăm o privire la un exemplu. Localizați funcțiile.php în caseta de setări WordPress Sandbox și adăugați următoarele două funcții:
funcția sandbox_create_menu_page () add_action ('admin_menu', 'sandbox_create_menu_page'); funcția sandbox_menu_page_display ()
Rețineți că folosim cârligul admin_menu pentru a înregistra elementul de meniu. Această funcție particulară apare imediat după ce meniul de bază de administrare este în vigoare, astfel încât doriți să vă înregistrați meniul aici, astfel încât WordPress să îl redă în timp ce afișează restul meniurilor.
Apoi, să setăm elementul de bază din meniu. În conformitate cu articolele anterioare din această serie, iată ce intenționăm să facem:
Destul de ușor, nu? Să mergem mai departe și să adăugăm meniul nostru. Din nou, nu copiați și lipiți acest cod. Citiți-le, rețineți comentariile și asigurați-vă că înțelegeți pe deplin ce facem:
"sandbox_create_menu_page () add_menu_page ('Opțiuni sandbox', // Titlul care va fi afișat pe pagina corespunzătoare pentru acest meniu 'Sandbox', // Textul care va fi afișat pentru acest element de meniu actual 'Administrator' din utilizatori pot vedea acest meniu 'sandbox', // ID-ul unic - adică, slug - pentru acest element de meniu 'sandbox_menu_page_display', // Numele funcției de apelat la redarea meniului pentru această pagină); // end sandbox_create_menu_page add_action ('admin_menu', 'sandbox_create_menu_page');
Acum, reîmprospătați meniul de administrare WordPress și ar trebui să vedeți un nou element de meniu. Când faceți clic pe el, ar trebui să vedeți o pagină necompletată.
Evident, acest lucru nu este foarte funcțional. Să eliminăm funcția de apel invers definită mai devreme pentru afișare ceva pe ecran:
funcția sandbox_menu_page_display () // Creați un antet în containerul implicit al WordPress "wrap" $ html = '„; $ html. = '„; // Trimiteți marcajul în browserul echo $ html; // end sandbox_menu_page_displaySandbox
„; $ html. = '
Versiunea finală a codului dvs. ar trebui să arate astfel:
/ ** * Adaugă un nou meniu de nivel superior în partea de jos a meniului de administrare WordPress. * / function sandbox_create_menu_page () add_menu_page ('Optiuni de nisip', // Titlul care va fi afisat pe pagina corespunzatoare pentru acest meniu 'Nisip', // Textul care va fi afisat pentru acest element de meniu actual 'administrator', // Ce tip de utilizatori pot vedea acest meniu "sandbox", // ID-ul unic - adică, slug - pentru acest element de meniu "sandbox_menu_page_display", // Numele funcției de apelat la redarea meniului pentru această pagină ") ; // // end sandbox_create_menu_page add_action ('admin_menu', 'sandbox_create_menu_page'); / ** * Redă afișarea de bază a paginii de meniu pentru temă. * / function sandbox_menu_page_display () // Creați un antet în WordPress implicit ' wrap 'container $ html ='„; $ html. = '„; // Trimiteți marcajul în browserul echo $ html; // end sandbox_menu_page_displaySandbox
„; $ html. = '
În afară de modul în care se utilizează efectiv funcția add_menu_page, probabil cea mai subtilă eliminare este că, în WordPress, fiecare element de meniu are o pagină de meniu corespunzătoare. Vom analiza acest lucru mai detaliat în întreaga serie, dar este important să notăm acum că vom începe să explorăm fiecare dintre diferitele tipuri de meniuri.
Deși acest lucru este în mare parte incomplet, vom adăuga la acest lucru prin restul acestui articol și restul tutorialului.
O notă privind poziționarea: Mulți dezvoltatori consideră că utilizarea argumentului de poziție este o etichetă proastă, întrucât amestecă experiența implicită cu utilizatorul cu WordPress. În plus, dacă definiți o poziție și o altă temă, pluginul sau funcția utilizează aceeași poziție, unul dintre elementele de meniu poate fi suprascris.
Submeniurile sunt la fel ca meniurile, cu excepția faptului că aparțin unui alt meniu - au un părinte. Deci, evident, nu puteți crea un submeniu fără a crea mai întâi un element de meniu. Desigur, așa cum am văzut în ultimul articol, elementele submeniului pot fi introduse în elementele de meniu existente - nu doar elementele de meniu personalizate.
În acest articol, vom introduce o pagină de submeniu în elementul nostru de meniu personalizat. Dar, înainte de a face acest lucru, să aruncăm o privire la funcția add_submenu_page și parametrii pe care îi acceptă:
Dacă doriți să adăugați un element de meniu la unul dintre meniurile existente, consultați tabelul din articolul precedent.
Să începem prin înregistrarea unui submeniu pentru meniul existent de mai sus. Vrem să facem următoarele:
Verificați următorul cod - vom adăuga acest lucru direct sub apelul nostru la add_menu_page:
add_submenu_page ('sandbox', // Înregistrați acest submeniu cu meniul definit mai sus 'Opțiuni sandbox', // Textul afișat în browser atunci când acest element de meniu este activ 'Opțiuni', // Textul pentru acest element de meniu ' administrator ', // Ce tip de utilizatori pot vedea acest meniu' sandbox_options ', // ID unic - slug - pentru acest element de meniu' sandbox_options_display '// Funcția folosită pentru a reda meniul pentru această pagină pe ecran);
Nu uitați să definiți apelul de apel, chiar dacă acesta este gol. Adică, nu uitați să adăugați această funcție în fișierul dvs. (vom adăuga mai multe pentru moment):
funcția sandbox_options_display () // end sandbox_options_display
Când actualizați browserul, ar trebui să vedeți acum Două submeniurile direct sub meniul "Nisip". Observați că WordPress creează un element de submeniu ca atare - un element submeniu care corespunde elementului de meniu și funcția de apel invers definită. A doua este noua opțiune de submeniu pe care tocmai am definit-o, deși nu face conținut.
Pentru a rezolva asta, hai să mergem mai departe și să introducem o pagină de bază. Actualizați funcția de apel invers a submeniului pentru a arăta astfel:
funcția sandbox_options_display () // Creați un antet în containerul implicit de WordPress 'wrap' $ html = '„; $ html. = '„; // Trimiteți marcajul în browserul echo $ html; // end sandbox_options_displayOpțiunile sandbox
„; $ html. = '
Reîmprospătați browserul dvs. din nou și ar trebui să vedeți un titlu de pagină de bază atunci când selectați noul Opțiuni submeniu element.
Deși acest lucru nu este necesar, rețineți că aveți de fapt elementul din meniul părinte și Opțiuni elementul de meniu se referă la același conținut - pur și simplu actualizați apelul înapoi în funcția ad_menu_page la sandbox_options_display
funcție pe care tocmai am definit-o.
Dacă dezvoltați un plugin WordPress, atunci există câteva modalități diferite pe care produsul dvs. le poate interfața cu platforma.
Mai exact, pluginul dvs. ...
Pentru a face mai ușor dezvoltatorii de plugin-uri să includă opțiunile lor în meniurile WordPress existente, API-ul WordPress oferă următoarea funcție: add_plugins_page.
Dar asteapta. Dacă ați urmărit împreună cu exemplele de mai sus, probabil ați observat că nu pare să existe nicio diferență distinctă între add_plugins_page și add_submenu_page. Ai dreptate. add_plugins_page oferă aceeași funcționalitate cu add_submenu_page, dar există două diferențe primare:
Deși cu siguranță puteți utiliza add_submenu_page pentru a atinge același obiectiv, sunt întotdeauna un fan al utilizării funcțiilor care sunt destinate unui caz de utilizare specifică, chiar dacă există o altă funcție API care face același lucru. Când faceți acest lucru, demonstrați că utilizați API ca dezvoltatori și că vă faceți codul mai puțin coerent, deoarece codul dvs. este mai strâns aliniat cu modul în care acesta interacționează cu platforma de bază.
Dezvoltarea pluginurilor este în afara sferei acestei serii, dar nu este complet irelevantă. Deși nu se vor face modificări în tema noastră de tip sandbox, vreau să furnizez un exemplu simplu care arată cum să folosești această funcție particulară.
Mai întâi, să examinăm argumentele acceptate de add_plugins_page:
Iată un exemplu simplu care demonstrează exact cum să îl folosiți. Rețineți că puteți include acest lucru în fișierul functions.php, dar este nu parte din tema Sandbox pe care lucrăm și ar trebui folosită în contextul unui plugin.
Mai întâi, configurați apelul la funcția API - observați că acesta utilizează cârligul admin_menu:
function sandbox_example_plugin_menu () add_plugins_page ('Plugin Sandbox', // Titlul care va fi afisat in fereastra browserului pentru aceasta pagina 'Plug-in Sandbox', // Textul care va fi afisat pentru acest meniu 'administrator', // tipul de utilizatori pot vedea acest element de meniu 'sandbox_plugin_options', // ID-ul unic - adică, slug - pentru acest element de meniu 'sandbox_plugin_display' // Numele funcției de apelat la redarea paginii pentru acest meniu); // end sandbox_example_plugin_menu add_action ('admin_menu', 'sandbox_example_plugin_menu');
Apoi, configurați funcția care va afișa afișarea pluginului:
funcția sandbox_plugin_display () // Creați un antet în containerul implicit al lui WordPress 'wrap' $ html = '„; $ html. = '„; // Trimiteți marcajul în browserul echo $ html; // end sandbox_plugin_displayOpțiuni plugin Plugin
„; $ html. = 'În prezent nu există opțiuni. Aceasta este doar pentru scopuri demo.
„; $ html. = '
Reîmprospătați tabloul de bord WordPress, treceți cu mouse-ul peste Plugin-uri și ar trebui să observați un nou element de meniu. Nu-i rău, huh?
Versiunea finală a codului ar trebui să arate astfel:
/ ** * Această funcție introduce o singură opțiune de meniu temă în meniul WordPress 'Plugins' * *. * / function sandbox_example_plugin_menu () add_plugins_page ('Plugin Sandbox', // Titlul care va fi afisat in fereastra browserului pentru aceasta pagina 'Sandbox Plugin', // Textul care va fi afisat pentru acest meniu 'administrator', / / Ce tip de utilizatori pot vedea acest element de meniu 'sandbox_plugin_options', // ID-ul unic - adică, slug - pentru acest element de meniu 'sandbox_plugin_display' // Numele funcției de apelat la redarea paginii pentru acest meniu) ; // end sandbox_example_theme_menu add_action ('admin_menu', 'sandbox_example_plugin_menu'); / ** * Reface o pagină simplă pe care să o afișați pentru meniul de teme definit mai sus. * / function sandbox_plugin_display () // Creați un antet în containerul implicit de WordPress 'wrap' $ html = '„; $ html. = '„; // Trimiteți marcajul în browserul echo $ html; // end sandbox_plugin_displayOpțiuni plugin Plugin
„; $ html. = 'În prezent nu există opțiuni. Aceasta este doar pentru scopuri demo.
„; $ html. = '
Din nou, această funcție nu va face parte din tema Sandbox, deoarece este orientată mai mult spre dezvoltarea pluginurilor; cu toate acestea, merită să acoperiți pentru cei dintre dvs. că veți folosi API-ul Setări în efortul dvs. de dezvoltare a pluginurilor.
La fel ca în cazul pluginurilor, WordPress oferă o funcție API pentru introducerea unor meniuri specifice temelor. Este foarte asemănător cu funcția din meniul plugin-ului, deoarece oferă încă un alt mod de a introduce un submeniu în meniurile existente. Diferența principală este că submeniul este adăugat la Aspect meniul.
Ca și în cazul exemplului pluginului din acest articol, vom examina modul în care putem folosi această funcție, dar nu o vom include în tema noastră de tip sandbox. Aceasta se referă doar la demonstrarea modului de utilizare a funcției doar în cazul în care optați pentru a merge pe acest traseu în munca personală.
În primul rând, vom examina argumentele acceptate de add_theme_page. Veți observa că ele sunt la fel ca cele necesare pentru meniul plugin-ului și foarte asemănătoare cu funcțiile de submeniu pe care le-am prezentat mai devreme:
add_theme_page acceptă următoarele argumente:
Ca și în cazul celorlalte funcții, vom crea câteva exemple de funcții care arată cum să includem acest lucru în proiectul dvs. Rețineți că apelul către add_theme_page poate fi adăugat funcțiilor.php și, spre deosebire de apelurile către add_plugin_page, ar trebui să locuiți aici atunci când vă dezvoltați tema.
În primul rând, apelul pentru configurarea elementului de meniu:
"sandbox_example_theme_menu () add_theme_page ('Themebox', // Titlul care va fi afișat în fereastra browserului pentru această pagină. 'Themebox', // Textul care va fi afișat pentru acest element de meniu 'administrator', // tipul de utilizatori poate vedea acest element de meniu 'sandbox_theme_options', // ID-ul unic - adică, slug - pentru acest element de meniu 'sandbox_theme_display' // Numele funcției de apelat la redarea paginii pentru acest meniu); // end sandbox_example_theme_menu add_action ('admin_menu', 'sandbox_example_theme_menu');
Apoi, vom seta o funcție pentru renderarea paginii cu opțiuni:
funcția sandbox_theme_display () // Creează un antet în containerul implicit de WordPress 'wrap' $ html = '„; $ html. = '„; // Trimiteți marcajul în browserul echo $ html; // end sandbox_theme_displayOpțiuni Tematică pentru Opțiuni Sandbox
„; $ html. = 'În prezent nu există opțiuni. Aceasta este doar pentru scopuri demo.
„; $ html. = '
Acum reîmprospătați tabloul de bord WordPress, treceți peste Aspect și ar trebui să vedeți noul element de meniu. Simplu!
Versiunea finală a codului ar trebui să arate astfel:
/ ** * Această funcție introduce o singură opțiune de meniu temă în meniul WordPress 'Appearance' *. * / function sandbox_example_theme_menu () add_theme_page ('Themebox', // Titlul care va fi afisat in fereastra browserului pentru aceasta pagina 'Themebox', // Textul care va fi afisat pentru acest meniu 'administrator', / / Ce tip de utilizatori pot vedea acest element de meniu 'sandbox_theme_options', // ID-ul unic - adică slug - pentru acest element de meniu 'sandbox_theme_display' // Numele funcției de apelat la redarea paginii pentru acest meniu) ; // end sandbox_example_theme_menu add_action ('admin_menu', 'sandbox_example_theme_menu'); / ** * Reface o pagină simplă pe care să o afișați pentru meniul de teme definit mai sus. * / function sandbox_theme_display () // Creați un antet în containerul implicit de WordPress 'wrap' $ html = '„; $ html. = '„; // Trimiteți marcajul în browserul echo $ html; // end sandbox_theme_displayOpțiuni Tematică pentru Opțiuni Sandbox
„; $ html. = 'În prezent nu există opțiuni. Aceasta este doar pentru scopuri demo.
„; $ html. = '
Pentru cei care sunteți interesați de dezvoltarea unei teme mai avansate, probabil că ați luat în considerare diferitele modalități de a implementa mai multe pagini de opțiuni pentru tema dvs..
Pe de o parte, putem adăuga mai multe submeniuri la un meniu de nivel superior, dar acolo este o alternativă: navigare cu file. Acest lucru se impune bine atunci când doriți să introduceți opțiuni pentru Aspect meniu și nu adăugați încă un element de meniu în tabloul de bord WordPress. Vom discuta acest lucru în detaliu în următorul articol.
Am analizat fiecare dintre cele patru modalități majore de a introduce propriile pagini de opțiuni în WordPress. Deși aceste funcții nu fac parte din API-ul Setări, este important să discutăm pentru că lucrează atât de strâns în legătură cu acesta.
Dar cunoașterea acestor funcții este doar o jumătate din ea. În calitate de dezvoltator responsabil pentru integrarea și organizarea setărilor, este important să știți când să utilizați fiecare dintre diferitele funcții în contextul propriu.
Deși nu există răspuns pentru glonț de argint pentru momentul utilizării fiecărei funcții, iată câteva reguli care trebuie luate în considerare atunci când lucrați la funcțiile personalizate, pluginurile și / sau tema:
Un cuvânt despre meniurile personalizate: Deși WordPress ne dă posibilitatea de a adăuga propriile noastre meniuri de nivel superior, adăugăm la orice meniu existent și, în general, ne dă posibilitatea de a face ceea ce vrem cu configurația implicită, o parte din comunitate se încruntă în acest sens. Ei cred că funcționalitatea personalizată nu trebuie să interfereze cu anumite meniuri de bază. Deși depinde în cele din urmă de dvs., implementați-vă munca cu discernământ - șansele sunt, puține lucruri pe care le faceți sunt mai importante decât funcționalitatea de bază a WordPress, așa că nu vă așezați munca deasupra.
În următorul articol, vom aplica un pic de ceea ce am învățat despre meniuri și vom începe să introducem pagini cu opțiuni pentru tema noastră de tip sandbox.
În plus față de adăugarea de pagini de meniu, vom analiza, de asemenea, navigarea cu file și modul în care o putem implementa pentru a funcționa împreună cu propriile pagini de meniu.
Între timp, revizuiți articolele anterioare din această serie și nu uitați să finalizați versiunea curentă a casetei de setări WordPress Sandbox pe GitHub.
Am acoperit destul de puține resurse în acest articol. Iată un rezumat al tuturor lucrurilor pe care le-am folosit: