skabe et vejrforhold, stik af med yahoo og simplexml

, skabe et vejrforhold, stik af med yahoo og simplexml,,,,, 2,,,,,,,,, 4,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, i denne forelæsning, vil du lære at skabe en enkel stik af, der anvender folkesundhedsprogrammet er indbygget simplexml biblioteker adgang til juhu!meteorologerne.de aktuelle vejrforhold vil vises med enten en shortcode eller skabelon,.,,,,,,, juhu!vejr, juhu!giver en fri rss /xml - vejr foder, der returnerer nuværende betingelser (prognose) data for en given lokalitet.her er det foder, url for london gb:, juhu!vejret, vil du se noget som dette, mener kilde til den side, og du vil finde en guldgrube af meteorologiske data i xml - format.vi kan analysere disse data ved hjælp af folkesundhedsprogrammet er simplexml bibliotek, ekstrakt, hvad vi har brug for, og vise det i vores wordpress stillinger, sider og skabelon filer. woeids, juhu!anvendelse woeids til entydig identifikation af geografiske enheder som byer samt specifikke punkter af interesse som disneyland og eiffeltårnet.stiller spørgsmålstegn ved juhu!meteorologerne ved hjælp af woeids er meget nøjagtig, idet hvert sted har en enestående woeid.for eksempel er der 36 pladser, der hedder paris i verden, men de har en enestående woeid. du kan bruge dette woeid lookup tjeneste for at finde en præcis lokation kamp. i ovennævnte url de to anvendte parametre er w for woeid og u for temperaturskala (celsius eller fahrenheit).vi skal bruge dem begge i vores stik af.,, trin 1 oprette stik af, wordpress stik af mappen ligger i din wordpress anlæg mappe, wp /plugins indhold.skabe en mappe inde i plugins mappe.lad os kalde det, få nuværende vejr.nu, skabe stik af sagen selv.lad os kalde det, get_current_weather.php, vejen til din stik af fil burde nu være:, wp indhold /plugins /få nuværende vejr /get_current_weather. php, hver wordpress stik af skal header oplysninger, således wordpress kan identificere den og gøre den tilgængelig på dit instrumentbræt stik af side.denne kode på toppen af din stik af sagsakter og redde det. <?php /* stik af navn: få nuværende vejr stik af uri: http://woeid.rosselliot.co.nz beskrivelse: bliver de nuværende vejr data (temperatur, vejr ikon, betingelser) fra yahoo vejr api - grænseflade.version 1.0 kørekort: gplv2 forfatter: ross elliot forfatter uri: http://woeid.rosselliot.co.nz * /kan du klippe det info ifølge deres egne krav. nu, gå til dit wordpress instrumentbræt og udvælge de plugins menu.du vil se det stik af, der er opført som denne:,, ikke aktiveret endnu.,, trin 2 shortcode og skabelon øremærke, wordpress shortcodes tillade dig at stik af produktionen i deres stillinger og sider.skabelon, tillade, at du sted, stik af produktionen i de skabelon filer (header, fod, kom her, osv.), er vi nødt til at definere to funktioner i vores stik af, for shortcode og en for modellen navneskilt.begge vil vende tilbage til det samme meteorologiske data, den model, mærke, model, vil blive anvendt som:, get_current_weather_template_tag (woeid, tempscale), hvor woeid er woeid til placering og tempscale er temperaturen nødvendige omfang celsius eller fahrenheit.så for at få vejret data for london gb i grader celsius, vi vil anvende den model, et, get_current_weather_template_tag ('44418 "," c "),., følgende kode i din stik af fil:, funktion get_current_weather_template_tag ($woeid =" $tempscale = »c«) (echo get_current_weather_display ($woeid, $tempscale)), og denne funktion accepterer woeid og tempscale.vil du se tempscale har en misligholdelse parameter i c, bare i tilfælde af, at det ikke er defineret, og for nemheds skyld.den funktion, afspejler en opfordring til en anden funktion, get_current_weather_display, som vil give os de formaterede data, vejret. shortcode, shortcode vil vende tilbage til det samme format som model et vejr data med lidt mere arbejde.den wordpress shortcode vil blive anvendt i stillinger og sider som denne: [get_current vejr woeid = "tempscale ="].så for at få vejret data for london gb i grader celsius, vi ville bruge den shortcode [get_current_weather woeid = 44418 "tempscale = »c«).fordi vi er ved hjælp af en shortcode, vi er nødt til at fortælle wordpress om det.for at gøre det, vi skal bruge wordpress funktion, add_shortcode,., afholdt følgende kode i din stik af fil:, add_shortcode ('get_current_weather "," get_current_weather_shortcode '); den første parameter, get_current_weather, definerer navnet på den shortcode, vi bruger i vores stillinger og sider.det andet parameter, get_current_weather_shortcode, er navnet på den funktion, der er af shortcode. her er den funktion med, get_current_weather,.de følgende kode i din stik af fil:, funktion get_current_weather_shortcode ($atts) ($args = shortcode_atts (array ('woeid = > "," tempscale = > c), $atts); $args ['tempscale '] = ($args ['tempscale'] = = »c«).c: »f«, vende tilbage get_current_weather_display ($args ['woeid "$args ['tempscale ']);}, shortcode funktion forklaret, vores shortcode funktion, get_current_weather_shortcode, accepterer shortcode attributter, der er indeholdt i $atts, vifte.disse egenskaber skal være vores woeid og tempscale.men hvad nu, hvis de ikke er?den shortcode api - giver os et middel til at skabe misligholdelser for disse forventede attributter, shortcode_atts, funktion, shortcode_atts tager to argumenter.den første er et system af navn = > værdi par.navnet er den forventede shortcode attribut og værdi er en standardværdi.hvis navn ikke er til stede i atts dollars, det er skabt til en standardværdi.dette giver os mulighed for at sikre, at vores funktion har den korrekte attributter med misligholdelse, men hvad hvis i stedet for c og f, en anden værdi var gået igennem for tempscale?det er der, det næste erklæring kommer ind i billedet. $args ['tempscale '] = ($args ['tempscale ". = =" c ").c: "f". det er vores garanti for, at enten c og f anvendes til tempscale.det anvender på den ternære operatør og funktionelt er equivelant: hvis ($args ['tempscale ". = =" c ") ($args ['tempscale '] = »c«) andet ($args ['tempscale'] = »f«.}, du kan bruge, men den ternære operatør mere elegant, til dette formål. endelig argumenter er gået til, get_current_weather_display, funktion, trin 3 lys ophævelse, her er den, get_current_weather_display, funktion, som er indkaldt af både shortcode og modellen -, følgende kode i din stik af fil:, funktion get_current_weather_display ($woeid $tempscale) ($weather_panel = < div klasse =" gcw_weather_panel "> '; hvis ($vejr = get_current_weather_data ($woeid, $tempscale)) ($weather_panel. = < span > ".$vejr ['city "].< /span >. $weather_panel. = < span > ".$vejr ['temp "].  ".strtoupper ($tempscale).< /span >. $weather_panel. = < img src = ".$vejr ['icon_url "]."/>. $weather_panel. = < span > ".$vejr ['conditions "].< /span > «) andet (//ingen vejr data $weather_panel. = < span > nr. meteorologiske data.< /span > "} $weather_panel. = < /div > « tilbage $weather_panel;}, denne funktion er bare for formatering vejret returnerede data fra get_current_weather_data (trin 4).hvis vejret data er vendt tilbage, "ingen vejr data."beskeden er vendt tilbage.,, løntrin 4 tunge løft, her er den, get_current_weather_data, funktion, som er indkaldt af det, get_current_ weather_display, funktion på trin 3 sted følgende kode i din stik af fil:, funktion get_current_weather_data ($woeid, $tempscale) ($query_url = http://weather.yahooapis.com/forecastrss?w = ".woeid dollars. "& e = ".$tempscale; hvis ($xml - = simplexml_load_file ($query_url)) ($fejl = strpos (strtolower ($xml - > kanal - > beskrivelse), "fejl"); //server - svar, men ingen vejr data for woeid} andre {$fejl = sandt; //ingen reaktion fra vejr - serveren} hvis (!$fejl) {$vejr ['city '] = $xml - > kanal - > børn ('yweather, sande) - > placering - > attributes() - > by. $vejr ['temp'] = $xml - > kanal - > pkt. - > børn ('yweather, sande) - > betingelse - > attributes() - > temp. $vejr ['conditions'] = $xml - > kanal - > punkt - > børn ('yweather, sande) - > betingelse - > attributes() - > tekst. $beskrivelse = $xml - > kanal - > punkt - > beskrivelse. $imgpattern = /src = "(*)?"- "preg_match ($imgpattern $beskrivelse, $tændstikker); $vejr ['icon_url '] = $tændstikker [1] tilbage $vejr;} tilbage 0}, kontakt - jubii!vejr og kontrol med de svar, de, get_current_weather_data, funktion, anvender simplexml sætter spørgsmålstegn ved.meteorologerne ved anvendelse af den i betragtning woeid og tempscale.hvis der er en fejl, vi vender tilbage til 0, simplexml giver os mulighed for at få adgang til xml - elementer i en genstand orienterede mode.det er første gang, vi er nødt til at gøre dette, er at se, om vi har en fejl i vores svar. hvis ($xml - = simplexml_load_file ($query_url)) ($fejl = strpos (strtolower ($xml - > kanal - > beskrivelse), "fejl"); //server - svar, men ingen vejr data for woeid} andre {$fejl = sandt; //ingen reaktion fra vejr - serveren}, hvis anden blokere forsøg på at læsse reaktion fra $query_url $xml - ved hjælp af simplexml metode, simplexml_load_file,.,, hvis vi får et svar, vi tjekker, kanal - > beskrivelse, område de vendte xml til string "fejl".f.eks. følgende internetadresse, som vil vende tilbage en fejl.betragtning kilden se, kanal - > beskrivelse, område, der indeholder snoren "fejl". juhu!vejr - fejl på side, hvis vi ikke får et svar (den anden), betyder det, at der skal være et problem at nå juhuu!og $fejl, er fastsat til ægte.det tager sig af begge fejl muligheder: ugyldig data eller dårlig forbindelse. af vejr - data, hvis der ikke er konstateret fejl, vi kan få de relevante vejr data fra xml. lad os gennemgå, hvad god respons ligner:, <?xml - version = "0" kodning = "utf - 8" standalone = "ja"?> < rss version = "0" xmlns: yweather = "http: //xml. vejr. juhu. kom /ns /rss /0" xmlns: geo - = = http: //www.w3.org /2003 /01 /geo /wgs84_pos&#"> < kanal > < afsnit > juhu!Weather - London, GB</title> <yweather:location city="London" region="" country="United Kingdom"/> <yweather:units temperature="C" distance="km" pressure="mb" speed="km/h"/> <yweather:wind chill="15" direction="210" speed="9.66" /> <yweather:atmosphere humidity="88" visibility="9.99" pressure="1015.92" rising="0" /> <yweather:astronomy sunrise="5:48 am" sunset="8:23 pm"/> <item> <title>Conditions for London, GB at 3:49 am BST</title> <geo:lat>51.51</geo:lat> <geo:long>-0.13</geo:long> <link>http://us.rd.yahoo.com/dailynews/rss/weather/London__GB/*http://weather.yahoo.com/forecast/UKXX0085_c.html < /forbindelse > < pubdate > af 16. august 2011, 3:49 er bst < /pubdate > < yweather: tilstand tekst = "fair" code = "33" vikar = "15" date "tir, den 16. august 2011 = 3:49 er bst" /> < beskrivelse > <![cdata (< img src = "http: //l.yimg. kom /a /i //- /52 /33. gif" /> < br /> < b > de nuværende betingelser: < /b > < br /> fair, 15 c < br /> < br /> < b > prognose: < /b > < br /> tir - overskyet.lav høj: 21: 13 < br /> wid - overskyet.høje: 23. lav: 14 < br /> < br /> < en href = "http: //os. rd.yahoo. kom /dailynews /rss /vejr /london__gb /* http: //vejr. juhu. kom /forventede /ukxx0085_c. html" > fuld fra juhu!vejr < /a > < br /> < br /> (oplyses af < en href = "http://www.weather.com" > vejrkanalen < /a >) < br />]] > < /beskrivelse > < /post > < /kanal > < /rss >, lad os tage byen værdi (london), der er lagret i kanal - > yweather: placering - > by attribut., konstaterer, at den rss header for xml - respons defineres to namespaces:, yweather, geo.for at få byen attribut, vi har brug for at få adgang til, yweather, namespace som barn af kanal.The TRUE argument to children tells SimpleXML that ,yweather, is an item prefix as in ,yweather:location,., $weather['city'] = $xml->channel->children('yweather', TRUE)->location->attributes()->city;,Using the same technique, we can get the values for the current temp and conditions (text):, $weather['temp'] = $xml->channel->item->children('yweather', TRUE)->condition->attributes()->temp; $weather['conditions'] = $xml->channel->item->children('yweather', TRUE)->condition->attributes()->text;,Getting the Weather Icon URL,The ,channel->item->description, item contains HTML enclosed in CDATA tags. vi kan ikke få adgang til html tags og attributter direkte ved hjælp af simplexml, så vi får en beskrivelse af data: $beskrivelse = $xml - > kanal - > punkt - > beskrivelse, så bruger vi preg_match og en regelmæssig udtryk til at udtrække alt mellem src = ", og" fra img - tagfat. $imgpattern = /src = "(*)?"- "preg_match ($imgpattern $beskrivelse, $tændstikker); $vejr ['icon_url '] = $tændstikker [1], har vi alle vejret data, vi kom efter, så vi kan vende tilbage til det, get_current_weather_display, funktion, formatering, jf. trin 3.,, løntrin 5 aktiver, og test, aktivere stik af i din wordpress instrumentbræt.skabe en ny post eller side og indsæt shortcode [get_current_weather woeid = 44418 "tempscale = »c«), i det område.på post - eller side, og du bør se vejrforhold i london. nu skal vi teste den skabelon, tag.åben den, footer.php, fil på din hjemmeside er tema mappe.tilføje den model, et, get_current_weather_template_tag ('44418 "," c "), lige efter, < div id =" lille ">, tag.genopfrisk din side, og du bør se vejrforhold i london i fod.,, supplerende, gøre det ret, så lad os tilføje en lille css til, style.css, fil i temaet mappe.,. gcw_weather_panel {baggrund farve:&#b1e7fb; grænse: 1px fastbcbfa; polstring: 10px; bredde: 180px.}. gcw_weather_panel * {margen: 0 auto; tekst tilpasse: center; display: blok.}, jeres vejr produktion bør nu ser sådan ud:,, så mange du kan lide, fordi hver shortcode eller model - output diskrete data, kan du få lige så mange forskellige vejr - output, som du har lyst til, og på samme side, gå til den!hvis man ser på xml - vendt tilbage fra juhu!du vil se, at vi har brugt meget lidt af de tilgængelige data.der er mange andre områder og egenskaber, herunder foreløbige data.en umiddelbar forbedring at gøre, ville være at vise den region og land i den by, du er med.du kunne også vise fugtighed, vindhastighed, og mange flere. og have det sjovt!,, nyttige links, juhu!vejr, simplexml, woeid lookup service, at skrive en wordpress stik af, wordpress shortcodes, wordpress skabelon hundetegn,







Previous:
Next Page: