{"id":231036,"date":"2022-12-25T11:38:00","date_gmt":"2022-12-25T08:38:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231036"},"modified":"2022-12-07T11:04:52","modified_gmt":"2022-12-07T08:04:52","slug":"anvaenda-funktioner-i-staellet-foer-globaler-get_post_field","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/anvaenda-funktioner-i-staellet-foer-globaler-get_post_field\/","title":{"rendered":"Anv\u00e4nda funktioner i st\u00e4llet f\u00f6r globaler: get_post_field"},"content":{"rendered":"<p>Eftersom PHP har fortsatt att g\u00e5 fram\u00e5t och WordPress (och dess utvecklarekonomi) arbetar f\u00f6r att b\u00f6rja anv\u00e4nda fler av de mer moderna funktionerna, \u00e4r en av de saker vi fortfarande ser h\u00e4nda anv\u00e4ndningen av globala inom WordPress.<\/p>\n<p>Till viss del \u00e4r det oundvikligt: \u200b\u200bBetydande delar av applikationen byggdes med hj\u00e4lp av globals n\u00e4r det var den anl\u00e4ggning som var en prim\u00e4r funktion; andra delar har dock g\u00e5tt fram\u00e5t genom att tillhandah\u00e5lla klasser eller funktioner som hindrar oss fr\u00e5n att beh\u00f6va g\u00f6ra det.<\/p>\n<p>Exempel: <code>get_post_field<\/code>\u00e4r ett gediget alternativ till att anv\u00e4nda det <code>$post<\/code>globala som ger mycket av samma information p\u00e5 ett lite modernare (och utan tvekan s\u00e4krare) s\u00e4tt att l\u00e4sa data.<\/p>\n<p>F\u00f6r m\u00e5nga \u00e4r det vanligt att anv\u00e4nda <a href=\"https:\/\/gist.github.com\/tommcfarlin\/f8ff8302439616caaf433f48aa85fe99#file-00-get-post-slug-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">n\u00e5got i stil med f\u00f6ljande :<\/a><\/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>Det \u00e4r inte ovanligt att se n\u00e5got som <code>get_the_title(get_the_ID());<\/code>genomg\u00e5ende kod, vilket \u00e4r bra, men det finns fortfarande tillf\u00e4llen d\u00e5 vi ser kod skriven som kommer \u00e5t vissa aspekter av det aktuella inl\u00e4gget.<\/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=\"Anv\u00e4nda funktioner i st\u00e4llet f\u00f6r globaler: get_post_field\" ><\/a><\/p>\n<p>Och jag ifr\u00e5gas\u00e4tter hur n\u00f6dv\u00e4ndig den praktiken egentligen ges <code>get_post_field<\/code>funktionen. Fr\u00e5n <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/get_post_field\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kodreferensen:<\/a><\/p>\n<blockquote>\n<p>H\u00e4mta data fr\u00e5n ett inl\u00e4ggsf\u00e4lt baserat p\u00e5 inl\u00e4ggs-ID.<\/p>\n<p>Exempel p\u00e5 postf\u00e4ltet kommer att vara &#8217;post_type&#8217;, &#8217;post_status&#8217;, &#8217;post_content&#8217;, etc och baserat p\u00e5 postobjektegenskapen eller nyckelnamn.<\/p>\n<\/blockquote>\n<p>Ett liknande exempel p\u00e5 den h\u00e4r funktionen skulle vara <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>funktionen d\u00e4r du skickar en specifik str\u00e4ng till funktionen som du vill h\u00e4mta information om samt ett ID (eller hela postobjektet, men n\u00e4r ID:t r\u00e4cker, varf\u00f6r inte?).<\/p>\n<p>Skillnaden h\u00e4r \u00e4r att du kommer att h\u00e4mta v\u00e4rdet p\u00e5 det beg\u00e4rda f\u00e4ltet eller en tom str\u00e4ng (snarare \u00e4n ett fel eller null eller falskt) n\u00e4r beg\u00e4ran misslyckas. Det betyder att vi skulle beh\u00f6va skriva en villkorlig eller en skyddsklausul f\u00f6r att hantera ett s\u00e5dant fall.<\/p>\n<p>S\u00e5 en fullst\u00e4ndig anv\u00e4ndning av denna funktion och koden kan kr\u00e4va <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\">ett par funktioner<\/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>Det hela kan kopplas ihop <a href=\"https:\/\/gist.github.com\/tommcfarlin\/f8ff8302439616caaf433f48aa85fe99#file-03-get-post-slug-example-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">s\u00e5 h\u00e4r:<\/a><\/p>\n<pre><code>&lt;?php\n\nif (hasPostSlug()) {\n  echo getPostSlug();\n}<\/code><\/pre>\n<p>Po\u00e4ngen med att dela den h\u00e4r typen av kod \u00e4r att hj\u00e4lpa till att dela n\u00e5gra av de alternativ vi har till globala variabler f\u00f6r att ocks\u00e5 dela API:er som finns men som kan vara underutnyttjade.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <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 \u00e4r ett alternativ till att anv\u00e4nda funktioner ist\u00e4llet f\u00f6r globaler. Och det \u00e4r en av m\u00e5nga som vi b\u00f6r anv\u00e4nda n\u00e4r vi g\u00e5r fram\u00e5t.<\/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":[848,901,724,868],"tags":[1173],"class_list":["post-231036","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-handledningar","category-koda","category-utvecklaren","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/231036","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=231036"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/231036\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/235955"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=231036"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=231036"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=231036"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}