genanvendelige skik meta - kasser, del 1: præsentation og grundlæggende områder

, genanvendelige skik meta - kasser, del 1: præsentation og grundlæggende områder,,,,, 5,,,,,,,,, 52,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, der er en masse tutorials på at skabe skik meta - kasser, lige her på wptuts, og det viser, at have et godt kendskab til disse og et system til at skabe dem er af afgørende betydning for en vellykket wordpress tema eller stik af projektet.i denne serie, vi vil ikke mindes, hvad meta - kasser er, men i stedet, vil vi skabe en let system for at udfylde dem i, hvad din seneste projekt er, at holde din arbejder konsekvent.,,,, skabe en meta - boks, som sædvanlig, er det første skridt til at nedsætte vores kodeks for at skabe en meta - æske.vi er bare at skabe et bibliotek, at vi kan komme tilbage til, så vi bruger en meget generisk navn til alting.nogle indstillinger kan også ændre sig, om man kommer fra et tema eller et stik af, men den enkleste måde er at bygge det ind i et emne, så det er, hvad vi vil dække.alle vores kodeks vil enten være placeret i functions.php, eller i en fil, der indeholder fra functions.php i temaet. //add meta - box funktion add_custom_meta_box() {add_meta_box ('custom_meta_box, //$id'custom meta - box, //$afsnit'show_custom_meta_box, //$callback'post, ////////$side'normal, //$forbindelse kraftig); //$prioriterede} add_action ('add_meta_boxes "," add_custom_meta_box '); dette vil tilføje en meta - æske til skrive /edit post skærm.,,, - id, vil blive føjet til den kasse, som et id for at gøre det let at reference i stil, plader og andre funktioner, $afsnit, angives i den klare i den kasse, $callback, er den funktion, vi kan bruge til at definere output i æsken, $side, anvendes tilvælg, som efter type æsken vil blive anvendt på, vi bruger, $sammenhæng, for at fastslå, hvor æsken vil dukke op på den side, der har $prioritet, fastsat til "høj" vil sætte kassen så tæt på redaktør, som vi kan, og faktorer i andre rubrikker tilføjes af centrale og plugins.,, skabe forbindelse system, da vi er ved at opbygge noget, vi kan bruge igen og igen, vil vi ikke være at definere html for hvert område.i stedet vil vi skabe et system, der er i besiddelse af alle de særlige oplysninger for hvert område, herunder en "type".Then we’ll loop through each field and change the html output according to the type., //Field Array $prefix = 'custom_'; $custom_meta_fields = array( \tarray( \t\t'label'=> 'Text Input', \t\t'desc'\t=> 'A description for the field.', \t\t'id'\t=> $prefix.'text', \t\t'type'\t=> 'text' \t), \tarray( \t\t'label'=> 'Textarea', \t\t'desc'\t=> 'A description for the field.', \t\t'id'\t=> $prefix.'textarea', \t\t'type'\t=> 'textarea' \t), \tarray( \t\t'label'=> 'Checkbox Input', \t\t'desc'\t=> 'A description for the field.', \t\t'id'\t=> $prefix.'checkbox', \t\t'type'\t=> 'checkbox' \t), \tarray( \t\t'label'=> 'Select Box', \t\t'desc'\t=> 'A description for the field.', \t\t'id'\t=> $prefix.'select', \t\t'type'\t=> 'sele- ct ",'options = > system (') = > system (»mærket« = >" mulighed ", »value = >'"),'two = > system (»mærket« = > mulighed for to, »value = >, to), 't re = > system (»mærket« = > tredje mulighed, »value = > "tre")))); det er vigtigt, at deres meta - områder har en særlig nøgle, så en $præfiks er defineret for at gøre det enkelt. at lægge den samme for hvert område. så begynder vi en række systemer, hvor hver enkelt post definerer et nyt område med en etiket, beskrivelse, unikke id, og typen af område, det er.den særlige kasse har yderligere oplysninger om at tilføje alle de muligheder for at vælge kasse.ved hjælp af denne model, kan du tilføje, eftersom mange af hver type område, du vil have.den rækkefølge, i hvilken de tilføjer dem til nettet er den rækkefølge, i hvilken de vil produktionen i meta - æske.,, outputting områder, nu er vi klar til at nedsætte vores callback funktion og outputting den html for hvert område. //, det bør fungere show_custom_meta_box() (global $custom_meta_fields $post /brug lige nu for verifikation echo '< input type = "skjulte" navn = "custom_meta_box_nonce" værdi = ". wp_create_nonce (basename (__file__).'" /> '; //begynde inden tabel og loop echo' < tabel klasse = "bord" > '; for hvert ($custom_meta_fields som $område) (//- værdi på dette område, hvis den findes for denne post $meta - = get_post_meta ($post - > id $område ['id "sande); //begynde en tabel skænderi med echo' < tr >\t\t\t\t<th><label for="'.$field['id'].'">'.$field['label'].'</label></th> \t\t\t\t<td>'; \t\t\t\tswitch($field['type']) { \t\t\t\t\t//case items will go here \t\t\t\t} //end switch \t\techo '</td></tr>'; \t} //end foreach \techo '</table>'; //end table },This code sets up the callback with a table for the fields and loops through each field in a table row., ,Echo a hidden nonce field to verify the fields when we save them later,Start a table and begin a loop through each field from the ,,$custom_meta_fields,, array.,Get the value of the field if it has been saved for the current post already so that we can output it in the field,Begin a table row with two cells: a ,<th>, for the label of the field, og a < td > for området selv., så vil vi indsætte vores bytte sag poster. endelig ende tabel ro, loop, og tabel inden lukketid den funktion, sag: tekst input, den grundlæggende idé er, at hvad angår type og prøvning ændre produktionen i overensstemmelse hermed., //text case 'text': \techo '<input type="text" name="'.$field['id'].'" id="'.$field['id'].'" value="'.$meta.'" size="30" /> \t\t<br /><span class="description">'.$field['desc'].'</span>'; break;,The idea here is pretty simple., ,If the field type is “text”, echo the html code using that field’s array settings,The field id is used for the name which will create the meta field’s unique key, and it’s used for the field id which we want so that we can link our label to the field and also call it in our style sheet later if we want,The value will output the ,$meta, variable which is empty if this field hasn’t been saved for this post yet.,After the field, we’ll output the description for further explangennemførelsen af, hvad der forventes, sag: textarea, //textarea sag textarea: echo '< textarea navn = ". $område ['id"]. "" id = ". $område ['id"]. "" koller = "60" rækker = »4« >. $meta. < /textarea > < br /> < over klasse = "beskrivelse" >. $område ['desc). < /span > "pause. det følger samme principper som med tekstfeltet, undtagen følger standarden for textarea html.de $meta - er mellem åbning og lukning af rfid - brikker, således at det output nogen reddede tekst. sag: afkrydsningsfelt, //afkrydsningsfelt sag afkrydsningsfelt: echo '< input type = "afkrydsningsfelt" navn = ". $område ['id"]. "" id = ". $område ['id"]. "" $12?kontrolleret = "kontrol": "," /> < etiket til = ". $område ['id"]. "" >. $område ['desc). < /etiketten > '; pauser, en check kasse kan være lidt vanskeligt for den værdi af $meta, anvendes til at afgøre, hvorvidt den boks kontrolleres.i vores kode, vi bruger en itråd betinget, at output "kontrol" attribut, hvis de $meta - værdi findes, og intet, hvis ikke den anden forskel er, at vi her anvende område er beskrivelse i et andet selskab, således at der er et stort clickable område for brugeren. sag: vælg rubrik, //udvælge "vælg": echo '< udvælge navn = ". $område ['id"]. "" id = ". $område ['id"]. "" >'; for hvert ($område ['options'] som $mulighed) (echo '< mulighed "- meta - = = $mulighed (»value']? «udvalgte = "udvalgt": "," værdi = ". $mulighed (»value"]. "" >. $mulighed (»mærket«). < /mulighed > "} echo '< /udvælge > < br /> < over klasse =" beskrivelse ">. $område ['desc). < /span >" pause, vælg rubrik, håndteres på en helt ny måde.,, åben den særlige område, loop gennem hver af de muligheder, som vi defineret i vores system, anvende en itråd betinget at afgøre, om den nuværende mulighed er en reddet for post - og output "udvalgt" attribut, hvis det er tæt på det særlige område og tilføje den beskrivelse, redde de data, vi har oprettet vores grundlæggende æske med et godt system, model for anvendelse og genanvendelse af flere typer af felter.nu er vi nødt til at sløjfe gennem dem, kontrollere dem, og redde dem til post. //- data funktion save_custom_meta ($post_id) (samlet $custom_meta_fields; //kontrollere pædofil, hvis!wp_verify_nonce ($_post ['custom_meta_box_nonce "basename (__file__)) afkast $post_id; //kontrollere autosave hvis (defineret ('doing_autosave) & & doing_autosave) afkast $post_id; //kontrollere tilladelser, hvis ('page '= = $_post ['post_type']) (hvis (!current_user_can ('edit_page, $post_id) afkast $post_id;} elseif (!current_user_can ('edit_post, $post_id) {tilbage $post_id;} //loop gennem markerne og redde data for hvert ($custom_meta_fields som $område) ($gamle = get_post_meta ($post_id $område ['id "sande); $nye = $_post [$område ['id ']] og hvis ($nye & & $nye!= $gamle) (update_post_meta ($post_id $område ['id "$nye)} elseif (" = = $nye & & $gamle) (delete_post_meta ($post_id $område ['id "$gamle)) //ende add_action hver} ('save_post", "save_custom_meta), vi vil gå igennem et par sikkerhed kontrol for at se, om de områder, skal reddes, voldtægtsforbryder, autosave, og brugernes kapacitet er tjekket.så vi sløjfe i hvert område igen.,, få området værdi, hvis den er blevet reddet og opbevarer det som $gamle, få den nuværende værdi, der er opført, og opbevarer det, $nye, hvis der er en $nye værdi, og det er ikke det samme som gamle, ajourføre post meta - område med en ny værdi, hvis de $nye værdi er tomme, og der er en $gamle værdi, slette posten meta - område $gamle værdi, hvis der ikke sker ændringer, der sker ikke noget,, indgåelse, din sidste rubrik skal se ud, som den ses her:, startede vi os selv en lille bibliotek og model for at skabe en skik meta - æske med flere arrays.nu kan du nemt smide det i et tema eller stik af og anvende det system til lige så mange tekstfelter, textareas, fælles for galochka, og udvælge de kasser, som de har brug for.i fortsættelse af dele af denne serie, kan vi begynde at arbejde med mere avancerede områder og måske et par sjove historier, der involverer jquery ui.vil du ikke gå glip af dem.,

Custom Meta Box



Previous:
Next Page: