forbedring af deres arbejde

, forbedre deres arbejde flow - separate dit mærke op fra din logik.,,,,, 2,,,,,,,,, 13,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, i denne lektion, jeg skal forklare en teknik, der giver dem mulighed for at udnytte en skabelon fil for alle jeres html behov.vil du ikke længere skal 'echo' strenge inde fra deres funktioner eller bekymre sig om at hoppe ind og ud af folkesundhedsprogrammet kun produktion en mark. jeg har brugt mange år på at udnytte mvc rammer (f.eks. zend, og i dag laravel), hvor det er en bedste praksis at adskille dine "programmering logik (funktioner, eller metoder) fra dit synspunkt (den resulterende html mark - up).denne altid fører til en mere pålidelige kode base, og det er faktisk lettere at skrive.med denne baggrund fik mig til at komme med en lignende løsning, når plugins for wordpress!det er ikke noget smart - - det er bare en lille "hjælper", som vil gøre det muligt at fjerne alle html stumper og akavet "flugt fra deres funktioner og placere dem i sikkerhed i deres egen" model "fil., så håber jeg, at denne forelæsning lyder interessant til dig og uden videre, lad os begynde.!,, , Step 1 Understanding What We're Going to Improve,Let's kick this tutorial off by taking a look at exactly what we're going to improve upon.,It's very common to see something like this within a plugin : (this snippet actually comes from one of my own tutorials on this site :p), add_shortcode( 'faq', function() { \t$posts = get_posts( array( //Get the FAQ Custom Post Type \t\t'numberposts' => 10, \t\t'orderby' => 'menu_order', \t\t'order' => 'ASC', \t\t'post_type' => 'faq', \t)); \t$faq = '<div id="wptuts-accordion">'; //Open the container \tforeach ( $posts as $post ) { //Generate the markup for each Question \t\t$faq .= sprintf( ( '<h3><a href="">%1$s</a></h3><div>%2$s</div>' ), \t- post - > post_title, wpautop ($post - > post_content)} $faq. = < /div > '; //beholderen lukkes igen $faq; //returnere html.}), hvad er der galt med det?det gør ikke noget.men det kunne være renere, mere omfattende og mere pålidelige.løber fra top til bund, kan vi se, at alle inden for en enkelt funktion er vi:,, stiller spørgsmålstegn ved database for stillinger i en bestemt form, idet en html snor til en variabel, der udfører en løkke, og concatenating yderligere forhøjelse til snoren, returnerer det bebyggede snor, nu du kan meget vel være, at se på det og tænker "big deal!det er kun et par linjer html, hvad er problemet? "i nogle henseender, du er i din ret til at tænke.men husk, det er kun 17 linier i øjeblikket - hvad sker der, når man udvider /forbedre stik af.hvad sker der, når din stik af vokser med 50 /100 /1 000 linjer kode (eller flere).vil du stadig være tilfreds med. http: //strenge stiplede rundt om din funktion på forskellige steder.hvad sker der, når du vil produktionen en html, der skal nogle pinlige "flugt" at arbejde ordentligt i folkesundhedsprogrammet kode?håber du kan se, at denne metode til at skabe og outputting html - kan blive meget problematisk.for ikke at nævne, at det bliver meget vanskeligt at opretholde og forbedre html, når det bare er spredt rundt omkring. så med det i tankerne, jeg har påtaget mig at ændre den måde, du tænker på outputting html i wordpress.for evigt.,, trin 2, bygning af den opfattelse, renderer stik af, ok, lad os komme i gang med det. skabe filer &, foldere, skabe en ny stik af folder kaldet, mening, i den mappe, skabe stik af sagsakter, view_renderer.php, nu skabe filen, view.php, vil det vores klasse, omfatte klasse, vores stik af, er enkelt, det omfatter, mener, at klasse, således at vi kan bruge det i nogle af vores andre plugins., * view_renderer.php * /omfatte ('view. folkesundhedsprogrammet), okay, nu hvor vi har medtaget den opfattelse, klasse, tid til at bygge den. den opfattelse, klasse, her har vi en gruppe, som kaldes, baggrund, med en enkelt statisk funktion kaldes, gøre (dette vil give os mulighed for at bruge syntaks, betragtning: gøre ($model), fra hvor som helst i vores plugins) og detto parametre:,, $filepath, - vejen til modellen fil.glem ikke, at vi skal holde vores modeller i den opfattelse, at vi skabte tidligere mappe, $teledata, - variabler, som vi gerne ville have adgang til i den skabelon (meget mere om det senere), kopi koden nedenfor i betragtning. folkesundhedsprogrammet, er:, <?php /* * view.php * * /klasse betragtning {/* * * ------------------------------------- * gøre en skabelon.* ------------------------------------- * * @ param $filepath - omfatter vej til skemaet.* @ param for $teledata - data, der skal anvendes som model.* @ tilbage string - * * * /offentlige statisk funktion gøre ($filepath $teledata = null) (//var de data, der sendes via?($teledata)?ekstrakt ($teledata): null; ob_start(); omfatter ($filepath); $skabelon = ob_get_contents(); ob_end_clean(); tilbage $skabelon}}?>, hvad foregår der her?, vi først og fremmest er at kontrollere, om $teledata, varible har en værdi (dvs. har vi sendt noget anvendes i modellen?hvis det gør, vi udvinder. indholdet (mere om det senere, så vi gør brug af folkesundhedsprogrammet er output - buffer.det giver os mulighed for at analysere en php fil og redde indholdet til en variabel, endelig er vi tilbage den snor, note: glem ikke at aktivere stik af nu inden for administrationen panel, er ret enkelt, hva '?præcis!men det ser ud til at være en meget enkel lille funktion, det giver os den luksus at være i stand til at skrive vores plugins i en super - organiseret, skalerbare, bevarelse af mode.tillad mig at demonstrere...,, trin 3 den virkelige verden eksempel, lad os skabe en enkelt stik af, slider, * * note: dette er bare en demonstration.det er gratis at bruge din egen stik af.,, skabe en folder kaldet, slider, i den mappe, skabe filen, slider.php, eksemplar koden nedenfor i slider.php, <?php /* stik af navn: en stik af uri: http://wp.tutsplus.com beskrivelse: generiske slider stik af at vise synspunkt renderer.forfatter: shane osbourne version: 0,1 forfatter uri: http://wp.tutsplus.com/author/shaneosbourne/* /?>, tilføje en shortcode, okay, nu er vi nødt til at tilføje en shortcode, der giver de seneste 5 stillinger og vise dem i en liste med titel og indhold.(for korthedens skyld vil vi tilføje vores stik af klasse, og vores indsats kroge i samme stik af papirer, men vær sød ikke at gøre det i "ægte": p) /* * * tilføje shortcode (php 5.3) * /add_shortcode ("skyder", function() {vende tilbage med en: - display().}), som vil gøre det muligt for os at bruge [en], i enhver stilling /side, og det vil produktionen skyldes, slider: display(), tilføje en klasse &, display(), metode, klasse slider {offentlige statisk funktion display() (http: ////tilbage her.), de seneste 5 stillinger., * * de seneste 5 stillinger * /offentlige statisk funktion display() {$stillinger = get_posts (array ('numberposts = > 5)), og nu har vi en lang række, post, genstande, og vi er klar til at opbygge vores html af skruet gennem dem.men vi er ikke bare begynde at indsætte html tråde i vores funktion her.i stedet vil vi vedtage den vifte af genstande til en skabelon fil og har alle html, der genereres af vejen., skaber den skabelon, skabe en mappe, skabeloner, i den mappe, skabe filen, 01.template.php, denne model vil holde alle vores - og vil gøre det muligt for os for at få adgang til de data, vi sender, for at det senere, sender data til skemaet, hver gang vi vil bruge alle variabler i vores modeller, vi kan bare sende dem ved at fastsætte en værdi af $teledata, vifte.enhver, der kender til ved hjælp af mvc rammer vil føle sig helt hjemme med denne fremgangsmåde. $teledata = system ("stillinger = > $stillinger), mængde, vigtigste her (" stillinger) er vigtigt, fordi det er, hvordan vi kan henvise til data fra den model.- du kan kalde det hvad du vil, men holder sig til noget, der giver mening.), bygge modellen, okay, så vi har set på, hvordan efter de seneste 5 stillinger, og hvordan til at sende det system af genstande til skemaet, nu er det tid til at udfylde den skabelon fil. < div > < ul > <?folkesundhedsprogrammet for hvert ($stillinger som $post):?> <!- loop - > < li > < h1 > <?= $post - > post_title?> < /h1 > < p > <?= $post - > post_content?> < /p > < /li > <!- loop - ende... > <?folkesundhedsprogrammet aspektet endforeach;?> < /ul > < /div >, ah!hvor godt er det at have alt det - i sin egen særskilte filer, væk fra vores informationssøgning og programmering logik?godt, jeg ved det!den vigtigste del af denne strategi er, at vi stadig kun er "adgang til data fra variabler som model.alle spørgsmål bør ske inden for rammerne af den metode, der opfordrer den skabelon.dette fører til en god arbejdsgang, som du har fuldstændig adskilt bekymringer. forestil dig, hvor let det vil være, når du er klar til at bygge videre på dette stik af.ikke mere concatenating tråde og uden tegn på funktioner., og returnerer afsmeltet model, vi har set alle komponenterne, lad os se, hvordan det hele passer sammen for at gøre det muligt for os at gøre en model og få en snor tilbage, som vi kan vende tilbage til vores shortcode):, først er vi nødt til at oplagre en henvisning til vores model i en statisk ejendom, så vi er nødt til at kontrollere, at den opfattelse, klasse findes, så skaber vi hele vejen til vores model fil ved at tage en henvisning til den aktuelle stik af registre og concatenating vores statisk ejendom, $skabelon, vi kalder vores opfattelse: render(), metode og send det de to parametre, der er nødvendige for, at vi i dette tilfælde, afkast, der er et resultat af afsmeltet model, fordi det er sådan, shortcodes, arbejde.men hvis du har brug for, at echo resultaterne i stedet (f.eks. når man skaber en admin side, callback forventer din produktion at være trykt direkte), så bare erstatte, vende tilbage med echo,.,, display(), metode i fuldt omfang, klasse slider (statisk $template = ///////skabeloner /01. model. php; offentlige statisk funktion display() (hvis (class_exists (syn)) (//de sidste 5 stillinger $stillinger = get_posts (array ('numberposts = > 5); //sæt data $på teledata = system ('posts = > og $stillinger); //får fuld vej til skemaet fil.$templatepath = dirname (__file__).statisk: $model; //tilbage det afsmeltede html tilbage synspunkt: gøre ($templatepath $teledata)} andre {tilbage ", de forsøger at gøre en model, men vi kan ikke finde den opfattelse, klasse"}}}, håber jeg, du kan sætte pris på det organisatoriske plan denne fremgangsmåde vil råd til dig!nu er din, display, funktion er kun ansvarlige for at indsamle de data, den har brug for, og at vende tilbage på grund af afsmeltet skabelon.,, idet det yderligere, vores eksempel ovenfor, er lige så grundlæggende, som det kan blive.det er stadig en meget forbedret kommunikation.lad os se på et eksempel, der viser, hvor nyttigt det virkelig kan være. f.eks. sige, din stik af gør brug af en sædvane meta - æske.for at gøre det skal vi:,, tilføje en konstruktør funktion til, slider, klasse, tilføje en metode til at tilføje metabox til hver post, tilføje en callback - metode til at gøre html til meta - box, og der tilsættes en krog i stik af sagen til instantiate klassen kun ved tilsætning af /redigering stillinger, endelig vil vi tilføje en skabelon fil, som vi gjorde tidligere, og tilføje, at det som en egenskab ved starten af klasse, klasse slider (statisk $metabox = /templates /metabox. model. folkesundhedsprogrammet "offentlig funktion __construct() {add_action ('add_meta_boxes, system ($, add_some_meta_box'))) /* * * tilføjer meta - kasse beholder * /offentlige funktion add_some_meta_box() {add_meta_box ('some_meta_box_name,'some meta - rubrik:"- system ($, render_meta_box_content"),'post,'advanced, kraftig,)} /* * * gøre meta - box indhold * /offentlige funktion render_meta_box_content() {/* * fra codex * * /echo '< h1 > test output - det bliver gjort i meta - æske. < /h1 > «) ////////////////tilføje aktion krog klasse funktion call_slider() {tilbage nye slider();} hvis (is_admin()) add_action ("belastning efter. folkesundhedsprogrammet, call_slider), se på den, render_meta_box_content, metode.det er den perfekte mulighed for at anvende den opfattelse, renderer!forestil dig en mere realistisk eksempel: /* * * gøre meta - box indhold * /offentlige funktion render_meta_box_content ($post) {$navn = get_post_meta ($post - > id "navn"); $fieldname = statisk: $fieldname; echo '< h3 > deres navn: < /h3 > echo' < etiket til = ".fieldname dollars. "> navn: < /etiketten > « echo '< input id = ".fieldname dollars. "navn = ".fieldname dollars. "værdi = ".$navn. "indikation af en art = "indtast dit navn her" /> « echo '< knap klasse = "knap" > ajourføre < /knap > «), urg!ja, det får arbejdet gjort, men det er så vanskeligt at gøre det på denne måde.hvad med, at vi udnytter vores opfattelse renderer i stedet., * * * gøre meta - box indhold * /offentlige funktion render_meta_box_content ($post) {$teledata = system ('name = > get_post_meta ($post - > id "navn"),'field = > statiske: $fieldname); $templatepath = dirname (__file__).statisk: $metabox; echo synspunkt: gøre ($templatepath $teledata)), og modellen fil:, < h3 > deres navn: < /h3 > < etiket til = "<?= $område?> "> navn: < /etiketten > < input id =" <?= $område?> "navn =" <?= $område?> "værdi =" <?= $navn?> "indikation af en art =" indtast dit navn her "/> < knap klasse =" knap "> ajourføre < /knap >, kan det kun virker som en meget lille fordel i dette eksempel.men tro mig, hvis du holder din vedrører særskilte som det her, bliver du en bedre wordpress udvikler hurtigt.,, konklusion, jeg tror, du har sikkert en god forståelse af, hvad vi forsøger at gøre her, og jeg opfordrer dem til at prøve at bruge denne teknik ved bygning af plugins i fremtiden.- jeg håber, du finder en adskillelse af drejer sig om "at være til gavn for dig.,, tutor noter:,,, selv om vi har den opfattelse, renderer i et stik af, af sig selv, du kunne nemt bare tilføje det til eksisterende plugins i stedet.det vil fjerne de ekstra skridt for at sikre stik af er aktiveret, før du bruger den. du er ikke begrænset til brug i tilfælde, der redegøres for i denne forelæsning, kan det anvendes i alle tilfælde, hvor de normalt ville produktionen html (- ved hjælp af en model til et in - line "fil produktion javascript?eller hvad med nogle specifikke css regler baseret på muligheder, hentet fra databasen?),, jeg ville være interesseret i at vide, hvad bruger du har fundet for denne teknik, så venligst aktie i bemærkninger:),



Previous:
Next Page: