{"id":231083,"date":"2022-12-25T12:06:00","date_gmt":"2022-12-25T09:06:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231083"},"modified":"2022-12-07T11:04:45","modified_gmt":"2022-12-07T08:04:45","slug":"funktsioonide-kasutamine-globaalsete-asemel-get_post_field","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/funktsioonide-kasutamine-globaalsete-asemel-get_post_field\/","title":{"rendered":"Funktsioonide kasutamine globaalsete asemel: get_post_field"},"content":{"rendered":"\n<p>Kuna PHP on j\u00e4tkanud edasiliikumist ja WordPress (ja selle arendajamajandus) t\u00f6\u00f6tab, et hakata kasutama rohkem kaasaegseid funktsioone, on \u00fcks asi, mida me ikka veel n\u00e4eme, globaalsete funktsioonide kasutamine WordPressis.<\/p>\n<p>Mingil m\u00e4\u00e4ral on see v\u00e4ltimatu: rakenduse olulised osad loodi globaalsete funktsioonide abil, kui see oli p\u00f5hifunktsioon; teised osad on aga edasi liikunud, pakkudes klasse v\u00f5i funktsioone, mis takistavad meil seda tegemast.<\/p>\n<p>N\u00e4ide: <code>get_post_field<\/code>on kindel alternatiiv <code>$post<\/code>globaalsele kasutamisele, mis pakub palju sama teavet veidi kaasaegsemal (ja v\u00e4idetavalt turvalisemal) andmete lugemisel.<\/p>\n<p>Paljude jaoks <a href=\"https:\/\/gist.github.com\/tommcfarlin\/f8ff8302439616caaf433f48aa85fe99#file-00-get-post-slug-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">on j\u00e4rgmise<\/a> asja kasutamine tavaline praktika:<\/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>Pole haruldane, et n\u00e4hakse midagi sellist, nagu <code>get_the_title(get_the_ID());<\/code>kogu koodis, mis on hea, kuid siiski on aegu, kus n\u00e4eme kirjutatud koodi, mis p\u00e4\u00e4seb juurde praeguse postituse teatud aspektidele.<\/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=\"Funktsioonide kasutamine globaalsete asemel: get_post_field\" ><\/a><\/p>\n<p>Ja ma kahtlen, kui vajalik sellele praktikale tegelikult <code>get_post_field<\/code>funktsioon antakse. <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/get_post_field\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Koodi viitest<\/a> :<a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/get_post_field\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external\"><\/a><\/p>\n<blockquote>\n<p>Andmete toomine postitusv\u00e4ljalt postituse ID alusel.<\/p>\n<p>Postitusv\u00e4lja n\u00e4ited on &#8216;post_type&#8217;, &#8216;post_status&#8217;, &#8216;post_content&#8217; jne ning p\u00f5hinevad postitusobjekti atribuudil v\u00f5i v\u00f5tmenimedel.<\/p>\n<\/blockquote>\n<p>Selle funktsiooni sarnane n\u00e4ide 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>funktsioon, kus edastate konkreetse stringi funktsioonile, mille kohta soovite teavet hankida, ja ID-d (v\u00f5i t\u00e4ielikku postitusobjekti, kuid kui ID-st piisab, siis miks mitte?).<\/p>\n<p>Erinevus seisneb selles, et p\u00e4ringu nurjumisel hangitakse v\u00e4lja taotletud v\u00e4lja v\u00e4\u00e4rtus v\u00f5i t\u00fchi string (mitte viga v\u00f5i null v\u00f5i v\u00e4\u00e4r). See t\u00e4hendab, et sellise juhtumi k\u00e4sitlemiseks peame kirjutama tingimus- v\u00f5i kaitseklausli.<\/p>\n<p>Nii et selle funktsiooni ja koodi t\u00e4ielikuks kasutamiseks v\u00f5ib vaja <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\">minna paari funktsiooni<\/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>Seda k\u00f5ike saab kokku siduda <a href=\"https:\/\/gist.github.com\/tommcfarlin\/f8ff8302439616caaf433f48aa85fe99#file-03-get-post-slug-example-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">j\u00e4rgmiselt:<\/a><\/p>\n<pre><code>&lt;?php\n\nif (hasPostSlug()) {\n  echo getPostSlug();\n}<\/code><\/pre>\n<p>Seda t\u00fc\u00fcpi koodi jagamise m\u00f5te on aidata jagada m\u00f5ningaid alternatiive, mis meil on globaalsetele muutujatele, et jagada ka olemasolevaid, kuid v\u00e4hekasutatud API-sid.<\/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 alternatiiv funktsioonide kasutamisele globaalsete funktsioonide asemel. Ja see on \u00fcks paljudest, mida peaksime edasi liikudes kasutama.<\/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":[718,894,842,863],"tags":[1165],"class_list":["post-231083","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-kood","category-opetused","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/231083","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/comments?post=231083"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/231083\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/235955"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=231083"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=231083"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=231083"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}