I dag går vi gjennom hele prosessen med å opprette et administrasjonspanel for et WordPress-tema, ved hjelp av den utmerkede WooFramework som et eksempel. Så tar vi ting et skritt videre, ettersom vi implementerer jQuery for å forbedre noen av funksjonaliteten.
WordPress er et av de mest populære Content Management Software (CMS) -systemene der ute. Enten det er for et klientprosjekt eller for å selge temaer på ThemeForest, er WordPress raskt fremvoksende som et CMS valg for mange webutviklere. Det er relativt enkelt å bruke, men kan gjøres enda enklere når du inkluderer et administrasjonspanel for brukere. I stedet for å måtte åpne PHP-malfilene og fitte med koden, kan brukerne direkte bruke alternativpanelet til å samhandle med WordPress-temaet ditt.
For eksempel - hvis temaet ditt har røde, blå og grønne fargevalg, og hver har en tilsvarende CSS-fil, vil det være langt lettere for en bruker å velge sin foretrukne farge fra en rullegardinliste. Så i dag, la meg veilede deg gjennom hele prosessen med å skape og forbedre en WordPress admin panel side inspirert av Woo.
Før vi begynner å lage administrasjonspanelet, må vi ha et tema, ikke sant? Så last ned kildefilene som følger med opplæringen. Jeg har litt endret Classic WordPress-temaet. Plasser mappen 'nettuts' (jeg har kalt temaet 'Nettuts') i mappen wp-innhold / temaer. Du bør se følgende filer:
Det meste av arbeidet vårt skal gjøres innenfor functions.php-filen.
Et tema kan eventuelt bruke en funksjonsfil, som ligger i temaunderkatalogen og heter navne.php. Denne filen fungerer i utgangspunktet som et plugin, og hvis det er tilstede i temaet du bruker, lastes det automatisk under WordPress-initialisering (både for admin sider og eksterne sider).
Foreslåtte bruksområder for denne filen:
(Fra WP Codex)
Nå som vi har opprettet vårt WordPress-tema, går du til Utseende> Temaer og aktiverer nettutemet.
Aktivert? Ok flott. Nå må vi tenke på et layout for vår admin panelside. Her er strukturen jeg har bestemt meg på:
/ * Gjenta inngangene for så mange alternativer som nødvendig. */ /* brukfor hver ny del av innganger, f.eks. Generelt, Hjemmeside etc * /
La meg forklare alt dette for deg. Alternativet settes inn i en div som heter "rm_wrap" og deretter "rm_opts" for alternativene. Da starter vi et skjema med alle innganger i den. Hvert avsnitt av alternativer (generelle innstillinger, Hjemmesideinnstillinger, Blogginnstillinger osv.) Har en egen div med en klasse av "rm_section". Denne div har en tittel (for navnet), så vel som flere input divs i den. Ved å bruke klasser som
Nå er det viktigste at kodingen av dette ikke skal gjøres manuelt - vi bør bruke PHPs fleksibilitet så mye som mulig. Det betyr effektivitet: ikke kode manuelt når du har løkker for deg!
Begynn med å åpne opp functions.php i favorittkodeditoren din (jeg bruker Notepad ++). Skriv inn følgende kode:
De to PHP-variablene holder navnet på ditt tema (Nettuts i vårt tilfelle), og et kortnavn som du har definert (nt i vårt tilfelle). Kallenavnet brukes til å prefikse alle våre temaalternativer, og er vanligvis unikt for et bestemt tema. Fortsett, vi skriver noen kode for å automatisk generere en liste over WordPress-kategorier, i stedet for at brukerne skriver inn ID-numre. Skriv inn koden under den allerede skrevne koden:
$ kategorier = get_categories ('hide_empty = 0 & orderby = navn'); $ wp_cats = array (); foreach ($ kategorier som $ category_list) $ wp_cats [$ category_list-> cat_ID] = $ category_list-> cat_name; array_unshift ($ wp_cats, "Velg en kategori");Denne koden bruker WordPress 'innebygde get_categories funksjon for å hente alle kategorier, og bruker deretter en foreach loop til å lagre dem i variabelen $ wp_cats. Alternativene "Velg en kategori" legges deretter til toppen av arrayet
Trinn 4
Nå begynner vi å legge inn en liste over alternativer for temaet. Se nedenfor, og lim det inn i din functions.php-fil:
$ opsjon = array (array ("navn" => $ themename. "Options", "type" => "tittel"), array ("navn" => "Generelt", "type" => "seksjon") array ("type" => "åpen"), array ("navn" => "Fargeskjema", "desc" => "Velg fargevalg for temaet", "id" => $ kortnavn. "_ color_scheme" , "type" => "velg", "alternativer" => array ("blå", "rød", "grønn"), "std" => "blå"), array "," desc "=>" Skriv inn lenken til logoet ditt "," id "=> $ kortnavn." _ logo "," type "=>" tekst "," std "=> navn "=>" Custom CSS "," desc "=>" Ønsker du å legge til en egendefinert CSS-kode? Sett inn her, og resten blir tatt vare på. Dette overstyrer andre stilark, f.eks .: a.button color: green "," id "=> $ kortnavn." _ custom_css "," type "=>" textarea "," std "=> = "" Hjemmeside "," type "=>" seksjon "), array (" type "=>" åpen "), array til et bilde som brukes til startsiden header. "," id "=> $ shortname." _ header_img ", "type" = "" tekst "," std "=>" "), array (" navn "=>" Hjemmeside utvalgt kategori "," desc "=>" Velg en kategori hvor de uthevede innleggene er tegnet " "=> $ kortnavn." _ feat_cat "," type "=>" velg "," options "=> $ wp_cats," std "=>" Velg en kategori "), array (" type "=>" close ") , array ("type" => "åpen"), array ("name" => "Footer copyright text", "desc" => "Skriv inn tekst som brukes i høyre side av bunnteksten. Det kan være HTML "," id "=> $ kortnavn." _ Footer_text "," type "=>" tekst "," std "=>" "), array (" navn "=>" Google Analytics kode " desc = "" Du kan lime inn Google Analytics eller annen sporingskode i denne boksen. Dette blir automatisk lagt til footer. "," id "=> $ kortnavn." _ ga_code "," type "=>" textarea " , "std" => ""), array ("navn" => "Tilpasset favicon", "desc" => "En favicon er et 16x16 pikselikon som representerer nettstedet ditt, lim inn URL-adressen til et .ico-bilde som du vil bruke som bildet "," id "=> $ kortnavn." _ favicon "," type "=>" tekst "," std "=> get_bloginfo ('url')." / favicon.ico ") ("navn" => "Feedburner URL", "desc" => "Feedburner er en Google-tjeneste som tar vare på RSS-feedet ditt. Lim inn Feedburner-nettadressen din her for å la leserne se den på nettstedet ditt", "id" => $ shortname. "_ feedburner", "type" => "tekst", "std" => get_bloginfo ('rss2_url')), array ("type" => "lukk"));Det var en stor del av koden, som helt sikkert garanterer noen forklaring. Så her går vi:
array ("name" => "footer",
"type" => "seksjon")
og åpner en ny seksjon.Prøv å navigere til WordPress. Du vil se at det ikke er noe alternativ hvor som helst utsikt admin panelet siden; så hvordan kan vi se det? Legg til følgende kodestykker til funksjonsfilen:
funksjon mytheme_add_admin () global $ themename, $ shortname, $ options; $ _GET ['side'] == basename (__ FILE__)) if ('save' == $ _REQUEST ['action']) foreach ($ alternativer som $ verdi) update_option ($ value ['id' ], $ _REQUEST [$ verdi ['id']]); foreach ($ valg som $ verdi) hvis (isset ($ _REQUEST [$ verdi ['id']])) update_option ($ verdi ['id'], $ _REQUEST [$ verdi ['id']]) ; annet delete_option ($ value ['id']); header ("Location: admin.php? page = functions.php & saved = true"); dø; else if ('reset' == $ _REQUEST ['action']) foreach ($ alternativer som $ verdi) delete_option ($ value ['id']); header ("Sted: admin.php? page = functions.php & reset = true"); dø; add_menu_page ($ themename, $ themename, 'administrator', basenavn (__ FILE__), 'mytheme_admin'); funksjon mytheme_add_init ()
Denne funksjonen er ment for oppdatering av alternativer, samt å legge til en menyside. Hvis alternativene blir lagret (angitt med en skjult variabel lagre), blir alle alternativene oppdatert med deres nye verdier. Hvis alternativene tilbakestilles (angitt med en annen skjult variabel med en nullstilling), slettes alle alternativene. Den siste linjen legger til en menyside - parameterne er henholdsvis navn og tittel, brukergodkjeningsnivået kreves for å vise siden, lagringssiden og funksjonen som brukes til visning / lagring (kalt mytheme_admin i vårt tilfelle). Se mytheme_add_init, en blanbk-funksjon? La det være, vi kommer til det senere.
Fortsatt ingen temaalternativer side, ikke sant? Vel, husk mytheme_admim funksjon vi hadde snakket om noen få linjer siden? Vi har fortsatt ikke skrevet den funksjonen. Så bruk koden fra trinnene 6,7 og 8 for å skrive den funksjonen. Til å starte med:
funksjon mytheme_admin () global $ themename, $ shortname, $ options; $ I = 0; hvis ($ _REQUEST ['saved']) ekko ''; hvis ($ _REQUEST ['reset']) ekko ''. $ THEME. instillinger lagret.
'; ?>'. $ THEME. innstillingene tilbakestilles.
innstillinger
For å enkelt bruke tema, kan du bruke menyen nedenfor.
"/>/>Det er en stor stykke kode! Forklaring - ved hjelp av en php foreach loop, evalueres hver opsjonstype i hvert enkelt tilfelle. Vi bruker en vekslingsteknikk for dette. Brytervariabelen er alternativene - sakene er tilpasset og evaluert. Legg merke til "break" -oppgaven etter hvert tilfelle? Dette er for å hindre noe kjent som "fall-through" -egenskapen. Når en sak er i samsvar, blir alle suksessive tilfeller også utført. Dette betyr at hvis vi samsvarer med tilfelle 3, blir tilfeller 4,5 etc. også utført. Vi har ikke det, ikke sant? Så bruk en pause for å stoppe bryteren.
Hvis det er et "åpent" -alternativ, er ingenting gjort. Hvis det er "lukk" type alternativer, er to divs lukket. Alternativet "tittel" brukes kun en gang - det er en introduksjon til temaalternativer. For hver type "tekst" (input type = "text"), "select" (dropdowns), "checkbox" og "textarea" (det er tydelig hva det betyr), vises tilsvarende inngang. Legg merke til
- Den brukes til å rydde flyter, som vi vil gjøre senere.Trinn 8
Vi kommer til slutten av den ganske massive funksjonen. Lim inn koden under:
case "-delen": $ i ++; ?>Ikoner: WooFunctionFor et «seksjon» -type-alternativ har jeg brukt en tellervariabel $ i. Dette holder styr på seksjonene og overfører det til navnet på innleveringsknappen, for å få unike innsendingsknapper. Det er også et siste skjema på slutten for å tilbakestille alle alternativer. Bildet som brukes, vil bli et gjennomsiktig bilde som brukes i vår jQuery-fication. Bruk denne siste koden for å få våre funksjoner til å spille:
Det forteller WordPress å legge til admin-menyen.
Trinn 9
Og voila! Vi har vår egen fantastiske admin panelside med en egen menyposisjon for seg selv. Så la oss sjekke det ut - klikk på linken. Og yuck. Det må være de mest stygg admin panel side noensinne. Så la oss ringe på vår gode venn, CSS! Opprett en ny mappe i nettene / katalogen og navngi den "funksjoner". Opprett en ny CSS-fil der - funksjoner.css. Lim inn i følgende kode:
.rm_wrap width: 740px; .rm_section border: 1px solid #ddd; nedre kant: 0; bakgrunn: # f9f9f9; .rm_opts label font-size: 12px; font-vekt: 700; bredde: 200px; display: block; float: venstre; .rm_input polstring: 30px 10px; grensebunn: 1px solid #ddd; border-top: 1px solid #fff; .rm_opts small display: block; float: right; bredde: 200px; color: # 999; .rm_opts skriv inn [type = "text"], .rm_opts velg width: 280px; font-size: 12 piksler; padding: 4 piksler; color: # 333; linje-høyde: 1em; bakgrunn: # f3f3f3; .rm_input-inngang: fokus, .rm_input textarea: fokus bakgrunn: #fff; .rm_input textarea width: 280px; høyde: 175 piksler; font-size: 12 piksler; padding: 4 piksler; color: # 333; linje-høyde: 1.5em; bakgrunn: # f3f3f3; .rm_title h3 cursor: pointer; font-size: 1em; tekst-transformer: store bokstaver; margin: 0; font-vekt: bold; color: # 232323; float: venstre; bredde: 80%; polstring: 14px 4px; .rm_title markør: pointer; grensebunn: 1px solid #ddd; bakgrunn: #eee; padding: 0; .rm_title h3 img.inactive margin: -8px 10px 0 2px; bredde: 32 piksler; høyde: 32 piksler; bakgrunn: url ('images / pointer.png') no-repeat 0 0; float: venstre; -moz-border-radius: 6 piksler; grense: 1px solid #ccc; .rm_title h3 img.active margin: -8px 10px 0 2px; bredde: 32 piksler; høyde: 32 piksler; bakgrunn: url ('images / pointer.png') no-repeat 0 -32px; float: venstre; -moz-border-radius: 6 piksler; -webkit-border-radius: 6 piksler; grense: 1px solid #ccc; .rm_title h3: hover img border: 1px solid # 999; .rm_title span.submit display: block; float: right; margin: 0; padding: 0; bredde: 15%; polstring: 14px 0; .clearfix clear: both; .rm_table th, .rm_table td border: 1px solid #bbb; padding: 10px; tekst-Justering: center; .rm_table th, .rm_table td.feature border-color: # 888;Jeg vil ikke forklare noe her; Det er ganske klart hva hver CSS-erklæring gjør, og du er ledig til å tilpasse oppsettet for ditt eget tema.
Trinn 10
Så nå har vi en fin CSS-fil. Men hvordan legger vi til siden? Tross alt har vi ikke direkte tilgang til
av dokumentet. Husk at blank mytheme_add_init () funksjonen vi skrev i trinn 4? Det vil komme til nytte. Endre det til dette:funksjon mytheme_add_init () $ file_dir = get_bloginfo ('template_directory'); wp_enqueue_style ("funksjoner", $ file_dir. "/ functions / functions.css", false, "1.0", "all");Det legger til functions.css filen til hodet. Plasseringen av filen bestemmes av malkatalogen.
Trinn 11
Gå se på siden nå. Ganske fint å se, er det ikke? Men så spør du, hva er '+' ikonet for? Vel, det er der jQuery kommer inn !. Opprett en ny fil rm_script.js i nettene / funksjonene / mappen. Lim inn i følgende kode:
jQuery (dokument) .ready (funksjon () jQuery ('.rm_options'). slideUp (); jQuery ('.rm_section h3'). klikk (funksjon () hvis (jQuery (dette) .parent ('.rm_options') css ('display') === 'ingen') jQuery (dette) .removeClass ('inaktiv'). addClass ('aktiv'). barn ('img'). removeClass inaktiv '). addClass (' aktiv '); else jQuery (dette) .removeClass (' aktiv '). addClass (' inaktiv '). inaktiv '); jQuery (dette) .parent (). next ('. rm_options '). slideToggle (' slow ');););Hva dette gjør er - når DOM laster, glir alle rm_optionene opp. Når "+" -ikonet klikkes, blir den inaktive klassen fjernet fra bildet og den aktive klassen lagt til - noe som gjør det til et «-» -ikon. Omvendt er gjort når '-' ikonet er klikket. Rm_options blir så slått opp eller ned (bestemt av gjeldende CSS-tilstand) ved hjelp av slideToggle-funksjonen - ganske enkelt. For å legge til dette skriptet, brukes den samme mytheme_add_init () -funksjonen. Endre det til:
funksjon mytheme_add_init () $ file_dir = get_bloginfo ('template_directory'); wp_enqueue_style ("funksjoner", $ file_dir. "/ functions / functions.css", false, "1.0", "all"); wp_enqueue_script ("rm_script", $ file_dir. "/ functions / rm_script.js", false, "1.0");Skriptet jQuery vil nå være aktivt. Gp sjekke det ut. Personlig tror jeg det er vakkert!
Trinn 12
Nå som vi har vår temaalternativer-side helt opprettet, vil jeg bare kjøre deg gjennom ved hjelp av alternativene. Koden for å bruke alternativene er som følger:
$ var = get_option ('nt_colur_scheme');Det henter alternativene nt_color_scheme. Se eksemplene nedenfor:
/ * For å endre CSS-stilarket avhengig av valgt farge * / / * For å ekko noen opphavsrettsbeskyttet footer, med HTML * /Utvalget av bruksområder er begrenset bare av fantasien din.
Konklusjon
Jeg håper du har lært noe i denne opplæringen. Dette er ikke ditt standardvalgspanel. Denne bruker ikke tabeller, det er jQuery forbedret, bruker fantastisk CSS, og er ekstremt enkelt å bruke. Poenget med denne opplæringen er å lære - du kan alltid erstatte sammenleggbare paneler med faner, for eksempel, eller til og med noe mer avansert. Bruk din kreativitet! Du er velkommen til å diskutere eller stille spørsmål i kommentarene!
WooThemes har siden utgitt versjon to av deres rammeverk. Du kan se gjennom detaljene her.
- Følg oss på Twitter, eller abonner på Nettuts + RSS-feed for de beste webutviklingsopplæringene på nettet.