{"id":231639,"date":"2022-12-25T11:45:00","date_gmt":"2022-12-25T08:45:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231639"},"modified":"2022-12-07T11:04:46","modified_gmt":"2022-12-07T08:04:46","slug":"funktioiden-kaeyttaeminen-globaalien-sijasta-get_post_field","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/funktioiden-kaeyttaeminen-globaalien-sijasta-get_post_field\/","title":{"rendered":"Funktioiden k\u00e4ytt\u00e4minen globaalien sijasta: get_post_field"},"content":{"rendered":"\n<p>Kun PHP on jatkanut edistymist\u00e4 ja WordPress (ja sen kehitt\u00e4j\u00e4talous) alkaa k\u00e4ytt\u00e4\u00e4 nykyaikaisempia ominaisuuksia, yksi asia, jonka n\u00e4emme edelleen tapahtuvan, on globaalien k\u00e4ytt\u00f6 WordPressiss\u00e4.<\/p>\n<p>Jossain m\u00e4\u00e4rin se on v\u00e4ist\u00e4m\u00e4t\u00f6nt\u00e4: Merkitt\u00e4v\u00e4t osat sovelluksesta rakennettiin k\u00e4ytt\u00e4m\u00e4ll\u00e4 globaaleja, kun se oli toiminto, joka oli ensisijainen ominaisuus; muut osat ovat kuitenkin edenneet tarjoamalla luokkia tai toimintoja, jotka est\u00e4v\u00e4t meit\u00e4 tekem\u00e4st\u00e4 sit\u00e4.<\/p>\n<p>Esimerkkin\u00e4: <code>get_post_field<\/code>on vankka vaihtoehto <code>$post<\/code>globaalin k\u00e4yt\u00f6lle, joka tarjoaa suuren osan samasta tiedosta hieman nykyaikaisemmalla (ja luultavasti turvallisemmalla) tapa lukea dataa.<\/p>\n<p>Monille <a href=\"https:\/\/gist.github.com\/tommcfarlin\/f8ff8302439616caaf433f48aa85fe99#file-00-get-post-slug-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">seuraavan<\/a> kaltaisen tavan k\u00e4ytt\u00e4minen on yleinen k\u00e4yt\u00e4nt\u00f6:<\/p>\n<pre><code>&lt;?php\n\/**\n * Retrieves the slug for the current post via the current post's\n * post_name property.\n *\n * @return string the slug of the post.\n *\/\nfunction getPostSlug(): string\n{\n  global $post;\n  return $post-&gt;post_name;\n}<\/code><\/pre>\n<p>Ei ole harvinaista n\u00e4hd\u00e4 jotain, kuten <code>get_the_title(get_the_ID());<\/code>koko koodissa, mik\u00e4 on hyv\u00e4 asia, mutta joskus n\u00e4emme kirjoitettua koodia, joka k\u00e4ytt\u00e4\u00e4 nykyisen viestin tiettyj\u00e4 puolia.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160029-61e703811521c.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160029-61e703811521c.png\" alt=\"Funktioiden k\u00e4ytt\u00e4minen globaalien sijasta: get_post_field\" ><\/a><\/p>\n<p>Ja kyseenalaistan, kuinka tarpeellista tuolle harjoitukselle todella annetaan <code>get_post_field<\/code>teht\u00e4v\u00e4. Koodiviitteest\u00e4 <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/get_post_field\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">:<\/a><\/p>\n<blockquote>\n<p>Hae tiedot viestikent\u00e4st\u00e4 viestitunnuksen perusteella.<\/p>\n<p>Esimerkkej\u00e4 viestikent\u00e4st\u00e4 ovat &#8217;post_type&#8217;, &#8217;post_status&#8217;, &#8217;post_content&#8217; jne., ja ne perustuvat post-objektin ominaisuuksiin tai avainten nimiin.<\/p>\n<\/blockquote>\n<p>Samanlainen esimerkki t\u00e4lle funktiolle on <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/get_user_by\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\"><code>get_user_by<\/code><\/a>funktio, jossa v\u00e4lit\u00e4t tietyn merkkijonon funktiolle, jonka tiedot haluat hakea, sek\u00e4 tunnuksen (tai koko post-objektin, mutta kun tunnus riitt\u00e4\u00e4, miksi ei?).<\/p>\n<p>Erona t\u00e4ss\u00e4 on se, ett\u00e4 noutat pyydetyn kent\u00e4n arvon tai tyhj\u00e4n merkkijonon (eik\u00e4 virheen tai tyhj\u00e4n tai ep\u00e4tosi), kun pyynt\u00f6 ep\u00e4onnistuu. T\u00e4m\u00e4 tarkoittaa, ett\u00e4 meid\u00e4n on kirjoitettava ehdollinen tai vartijalauseke t\u00e4llaisen tapauksen k\u00e4sittelemiseksi.<\/p>\n<p>Joten t\u00e4m\u00e4n toiminnon ja koodin t\u00e4ysi k\u00e4ytt\u00f6tapaus voi vaatia <a href=\"https:\/\/gist.github.com\/tommcfarlin\/f8ff8302439616caaf433f48aa85fe99#file-01-get-post-slug-via-field-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">pari toimintoa<\/a> :<\/p>\n<pre><code>&lt;?php\n\n\/**\n * Generates a boolean value based on the presence of a post slug.\n *\n * @return bool True if there is a slug; otherwise, false.\n *\/\nfunction hasPostSlug(): bool\n{\n  return ('' === getPostSlug());\n}\n\n\/**\n * Retrieves the slug for the current post via the get_post_field\n * API function.\n *\n * @return string the slug of the post.\n *\/\nfunction getPostSlug(): string\n{\n  return get_post_field('post_name', get_the_ID());\n}<\/code><\/pre>\n<p>N\u00e4m\u00e4 kaikki voidaan yhdist\u00e4\u00e4 <a href=\"https:\/\/gist.github.com\/tommcfarlin\/f8ff8302439616caaf433f48aa85fe99#file-03-get-post-slug-example-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">n\u00e4in:<\/a><\/p>\n<pre><code>&lt;?php\n\nif (hasPostSlug()) {\n  echo getPostSlug();\n}<\/code><\/pre>\n<p>T\u00e4m\u00e4ntyyppisen koodin jakamisen tarkoitus on auttaa jakamaan joitain vaihtoehtoja, joita meill\u00e4 on globaaleille muuttujille, jotta voimme jakaa my\u00f6s olemassa olevia mutta mahdollisesti vajaak\u00e4yt\u00f6ss\u00e4 olevia API-liittymi\u00e4.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>get_post_field on vaihtoehto funktioiden k\u00e4ytt\u00e4miselle globaalien sijasta. Ja se on yksi monista, joita meid\u00e4n pit\u00e4isi k\u00e4ytt\u00e4\u00e4 eteenp\u00e4in siirtyess\u00e4mme.<\/p>\n","protected":false},"author":1,"featured_media":235955,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[719,895,843,864],"tags":[1166],"class_list":["post-231639","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kehittaejae","category-koodi","category-opetusohjelmia","category-wordpress-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/231639","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=231639"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/231639\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/235955"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=231639"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=231639"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=231639"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}