begyndt med wordpress forbigående api, del 2

, ved at komme i gang med wordpress forbigående api, del 2,,,,, andel,,,,,,,, 7,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, i den første post i denne serie, vi har defineret, hvad api er, hvor det er forskellig form indstillingerne api - og nogle af de generelle krav, som vi kan yde til api - grænseflade.i denne post, vi tager et kig på en praktisk gennemførelse af api - og håndtere nogle særheder, som kom med i forbindelse med udløb data.,,, det er wordpress api er en magtfuld (men let at bruge) aspekt af wordpress api - grænseflade.generelt er det let at lagre data med en udløbsdato, og gør det let at drage fordel af forskellige caching plugins til i sidste ende at øge hastigheden af din hjemmeside.,, før de stik af, i forbindelse med dette stik af, vi er ved at skabe en enkel dims, der vil liste en blogs top commenters af hele tiden.målet med stik af, er at holde det magre, så vi kan fremhæve transienter funktion ved stik af. at bemærke, at alle de stik af filer kan hentes fra github til enhver tid.i mellemtiden, gå videre og skabe et register "top commenters skjult og sørge for, at den har følgende fortegnelse struktur:,, hvis du ikke er interesseret i at lokalisere de stik af, er fri til at gå," lang "directory ud af stik af.på dette punkt er vi klar til at begynde at skrive den dims.,, grundlæggende funktionalitet, stik af, er enkelt.det bør,, vil brugeren til at give den dims skik, hent de ti mest populære commenters af den blog, nemt nok.her er koden for den grundlæggende stik af.bemærk, at det er kommenteret i så bruge engang læse det for at forstå, hvad vi gør.hvis du ikke er bekendt med den dims api, glem ikke at tjekke vores wordpress dims boilerplate post. klasse top_commenters_cached udvider denne wp_widget {navn = "top commenters (skjult."; denne locale = "top commenters skjult locale '; denne kugle =" top commenters skjult' /* -------------------------------------------------- * /* * -------------------------------------------------- konstruktøren * /* * * widget - konstruktør.angiver classname og beskrivelse, instantiates * den dims, belastninger lokalisering filer, og som omfatter nødvendige manuskripter og * styles.* /funktion top_commenters_cached() ($widget_opts = system ('classname = > selv: navn,'description = > __ (»en stik af, der anvendes til at påvise wordpress transienter api til en envato blog serie. "selv: locale) $- > wp_widget (self -:: patron, __ (selv: navn, selv: lokale), $widget_opts); load_plugin_textdomain (selv: locale, falske dirname (plugin_basename (__file__))./lang /');} //ende konstruktøren /* -------------------------------------------------- * /* api - funktioner /* -------------------------------------------------- * /* * * output indholdet af den dims.* * @ args den vifte af form elementer * @ instans * /funktion widget ($args $instans) (ekstrakt ($args, extr_skip); echo $before_widget. $widget_title = tomme ($) ['widget_title '])? "- apply_filters ('widget_title, $instans ['widget_title ']); $commenters = $- > query_for_commenters(); //- dims omfatte (wp_plugin_dir. "/«.selv: "kugle"./synspunkter /widget. folkesundhedsprogrammet) echo $after_widget;} //ende widget /* * * processer, den dims er muligheder for at blive reddet.* * @ new_instance tidligere tilfælde af værdier, før den opdatering.* @ old_instance nye tilfælde af værdier, der frembringes via opdatering.* /funktion ajourføring ($new_instance, $old_instance) ($) = $old_instance. $instans ['widget_title '] = $- > strimler ($new_instance, widget_title); tilbage $instans.} //ende widget /* * * skaber administration form for widget.* * @ instans den vifte af nøgler og værdier for den dims.* /funktion form ($instans) ($instans = wp_parse_args (array) $eksempel system ('widget_title = > ')); $widget_title = $- > strimler ($), widget_title) //- administrationen form omfatter (wp_plugin_dir. "/«.selv: "kugle"./synspunkter /admin. folkesundhedsprogrammet)} //ende form /* -------------------------------------------------- * /* private funktioner /* -------------------------------------------------- * /* * * har ugentlige top commenters i den forløbne uge og lagrer de værdier i depot.* hvis forrådet er tom, så funktion vil anmode om oplysninger fra databasen og opbevaring i depot.* /privat funktion query_for_commenters() ($commenters = ugyldig; //forespørgsel databasen til toppen commenters globale $wpdb. $commenters = $wpdb - > get_results ("vælg tæller (comment_author) som comments_count, comment_author, comment_type fra $wpdb - > bemærkninger, hvor comment_type!= pingback og comment_author!= "og comment_approved = 1, gruppe af comment_author for comment_author desc begrænse 10") og returnere $commenters} //ende query_for_commenters /* -------------------------------------------------- * /* hjælper funktioner /* -------------------------------------------------- * /* * * praktisk metode til at strippe tags og slår ud fra indholdet * af en formular input.* * @ mål angår argumentet array * @ afsnit afsnit af det element, som vi skal berøve tags og piskeslag.* /private funktion, strimler ($mål, $titel) (tilbage strip_tags (stripslashes ($mål [$titel])} //bånd) //ende klasse add_action ('widgets_init, create_function ("," register_widget ("top_commenters_cached") ').>, lad os tage et kig på den dims er lyset.det er den del af stik af, som er ansvarlig for visning af listen over bemærkninger.det virker ved at udvise den dims er afsnit (hvis det er defineret), så sløjfer gennem resultater, at skabe en ny liste punkt. <?folkesundhedsprogrammet (strlen (trim ($widget_title) > 0) {?> < h3 klasse = "dims" > <?php echo $widget_title;?> < /h3 > <?php} //, hvis globale $wpdb. $comment_list = < af > '; for hvert ($commenters som $commenter) ($comment_list. = < li >'; //faktisk trykke commenter navn og antallet af bemærkninger $comment_list. = $commenter - > comment_author. $comment_list. = "(".$commenter - > comments_count. ")og $comment_list. = < /li > «) //ende af hver $comment_list. = < /ol > « echo $comment_list;?> vi har lagt en del af koden.nemlig, admin - panelet.det vil blot give for brugerne til at gå ind i et afsnit for deres widget:, < div > < fieldset > < legende > <?folkesundhedsprogrammet aspektet _e ('widget muligheder, selv: locale)?> < /legende > < etiket til = "<?php echo $- > get_field_id ('widget_title)?> "klasse =" blokke "> <?folkesundhedsprogrammet aspektet _e ('title: "selv: locale)?> < /etiketten > < input type = "tekst" navn = "<?php echo $- > get_field_name ('widget_title)?> "id =" <?php echo $- > get_field_id ('widget_title)?> "værdi =" <?php echo $instans ['widget_title ']?> "klasse =" /> < /fieldset > < /div >, husker du, at du kan se den fulde kildekode og downloade stik af fra sin github register.,, cache data på dette punkt, har vi imidlertid en funktionel stik af. vi er faktisk ikke caching data endnu.den mest intensive del af dette stik af, når vi har afprøvet den database, og resultaterne af undersøgelsen, er, hvad vi rent faktisk ønsker at lager, så lad os gøre det. find forespørgslen i kode: global $wpdb. $commenters = $wpdb - > get_results ("vælg tæller (comment_author) comments_count, comment_author, comment_type fra $wpdb - > bemærkninger, hvor comment_type!= pingback og comment_author!= "og comment_approved = 1, gruppe af comment_author for comment_author desc begrænse 10"), og lad os gemme resultaterne i 12 timer efter transienter api:, set_transient ('top_commenters_cached, $commenters, 60 * 60 * 12), ret nemt.selvfølgelig, vi er ikke færdige endnu, indhente oplysninger, når de forbigående er fastsat, skal vi være i stand til at genvinde de forbigående.lad os sætte det op nu, privat funktion query_for_commenters() {tilbage get_transient ('top_commenters_cached)} //ende query_for_commenters, det er alt der er til det.men vent - hvis du husker fra den første post i serien, er faktisk udløber, så vi ikke er garanteret, at hente den forbigående.,, at manglende data, uanset hvad du gør, genfinde data, der er udløbet, generelt følger den samme proces:,, undersøge, om der findes i forbigående, hvis det eksisterer, bruge det, hvis det ikke findes, så få fat i det, så lad os gøre det inden for rammerne af vores stik af:, privat funktion query_for_commenters() ($commenters = ugyldig; //se, hvis de forbigående eksisterer.sæt den, hvis den er udløbet, eller mangler, hvis!get_transient ('top_commenters_cached ')) (//forespørgsel databasen til toppen commenters globale $wpdb. $commenters = $wpdb - > get_results ("vælg tæller (comment_author) som comments_count, comment_author, comment_type fra $wpdb - > bemærkninger, hvor comment_type!= pingback og comment_author!= "og comment_approved = 1, gruppe af comment_author for comment_author desc begrænse 10"); //butik resultatet set_transient ('top_commenters_cached, $commenters, 60 * 60 * 12)} ////////////////forbigående er sikret, hvis der nu, så vender det tilbage get_transient ('top_commenters_cached ');) //ende query_for_commenters, konklusion, ikke så slemt, vel?som du kan se, der arbejder med transienter api kræver mere end at vide, hvornår man skal bruge den, og hvilke funktioner er til rådighed.efter min mening er det et af de vigtigste aspekter af wordpress api. hvis du finder dig selv igen, store mængder data, som leder efter en måde at udløbe, data for en opfriskning eller blot ønsker at drage fordel af plugins caching, husk at drage fordel af transienter api - grænseflade.




Previous:
Next Page: