{"id":233641,"date":"2023-02-19T15:13:00","date_gmt":"2023-02-19T12:13:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233641"},"modified":"2022-11-11T00:47:41","modified_gmt":"2022-11-10T21:47:41","slug":"guide-aendra-wordpress-globala-fraaga","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/guide-aendra-wordpress-globala-fraaga\/","title":{"rendered":"Guide: \u00c4ndra WordPress globala fr\u00e5ga"},"content":{"rendered":"\n<p>I vissa fall kan du beh\u00f6va \u00e4ndra den globala inl\u00e4ggsfr\u00e5gan WordPress utf\u00f6r p\u00e5 alla sidor du bes\u00f6ker \u2013 b\u00e5de admin och frontend. I den h\u00e4r guiden kommer vi att titta p\u00e5 vilken krok som ska anv\u00e4ndas och hur man \u00e4ndrar fr\u00e5geargumenten efter eget tycke.<\/p>\n<h2>Vilken krok man ska anv\u00e4nda<\/h2>\n<p>F\u00f6rst m\u00e5ste du veta vilken krok du ska l\u00e4gga till din kod till. Vi beh\u00f6ver en hook som sker direkt efter att WordPress har st\u00e4llt in alla argument, men innan sj\u00e4lva fr\u00e5gan k\u00f6rs. F\u00f6r detta anv\u00e4nder vi handlingen <code>pre_get_posts<\/code>.<\/p>\n<p>I denna krok f\u00e5r du en parameter; vilket \u00e4r ett <code>WP_Query<\/code>objekt som WordPress senare kommer att k\u00f6ra fr\u00e5gan med. Du g\u00f6r \u00e4ndringar i objektet \u2013 men du beh\u00f6ver inte returnera det eftersom WordPress k\u00f6r fr\u00e5gan med det modifierade objektet.<\/p>\n<pre><code>add_action('pre_get_posts', function($query) {\n    \/\/ Add your code here\n});<\/code><\/pre>\n<p>F\u00f6r att \u00e4ndra fr\u00e5gan kr\u00e4ver troligen att du anv\u00e4nder n\u00e5gra villkorliga taggar f\u00f6r att ange de fall du vill \u00e4ndra den. Du kanske till exempel vill rikta in fr\u00e5gan endast i s\u00f6kresultat eller kategorivyer.<\/p>\n<h2>Villkorliga taggar<\/h2>\n<p>WordPress har ett g\u00e4ng <a href=\"https:\/\/codex.wordpress.org\/Conditional_Tags\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">villkorliga taggar<\/a> som du kan anv\u00e4nda f\u00f6r att specificera vilka fall du vill l\u00e4gga till din kod. En villkorlig tagg \u00e4r helt enkelt en funktion som returnerar true eller false beroende p\u00e5 vilket tillst\u00e5nd WordPress \u00e4r i. Exempel p\u00e5 vanliga villkorliga taggar \u00e4r <code>is_admin()<\/code>f\u00f6r att kontrollera om vi f\u00f6r n\u00e4rvarande \u00e4r i admin eller frontend, <code>is_singular()<\/code>om vi \u00e4r p\u00e5 ett enda inl\u00e4gg eller sida i frontend, och <code>is_search()<\/code>om vi \u00e4r p\u00e5 s\u00f6kresultatsidan.<\/p>\n<p>T\u00e4nk p\u00e5 att kroken <code>pre_get_posts<\/code>k\u00f6rs b\u00e5de f\u00f6r admin och frontend. Om du bara vill p\u00e5verka den globala fr\u00e5gan i frontend, m\u00e5ste du linda in din kod i en if-check p\u00e5 den villkorliga taggen <code>is_admin()<\/code>.<\/p>\n<h3>Anm\u00e4rkning om villkorliga taggar i<code>pre_get_posts<\/code><\/h3>\n<p>Villkorliga taggar \u00e4r bra och allt, men det finns n\u00e5gra saker att t\u00e4nka p\u00e5 n\u00e4r du anv\u00e4nder dessa inuti <code>pre_get_posts<\/code>.<\/p>\n<p>F\u00f6rst m\u00e5ste du bekanta dig med taggen <code>is_main_query()<\/code>. \u00c5tg\u00e4rden <code>pre_get_posts<\/code>k\u00f6rs faktiskt flera g\u00e5nger f\u00f6r varje sidladdning. Till exempel <code>pre_get_posts<\/code>k\u00f6rs n\u00e4r varje meny genereras (inklusive de i widgets). F\u00f6r att \u00e4ndra den faktiska globala fr\u00e5gan, t.ex. inl\u00e4gg f\u00f6r ett kategoriarkiv eller s\u00f6kresultat, m\u00e5ste du rikta in dig p\u00e5 &quot;huvudfr\u00e5gan&quot; med <code>is_main_query()<\/code>.<\/p>\n<p>F\u00f6r det andra m\u00e5ste du vara medveten om fall d\u00e4r du beh\u00f6ver kontrollera de villkorliga taggarna p\u00e5 det angivna objektet ist\u00e4llet f\u00f6r att anropa funktionen &quot;oberoende&quot;. Vanligtvis n\u00e4r du anv\u00e4nder villkorliga taggar, skulle du skriva det s\u00e5 h\u00e4r:<\/p>\n<pre><code>if (is_main_query()) {\n    \/\/ Do stuff\n}<\/code><\/pre>\n<p>Men n\u00e4r du anv\u00e4nder <code>pre_get_posts<\/code>, finns det n\u00e5gra villkorliga taggar som du m\u00e5ste applicera p\u00e5 objektet. Till exempel:<\/p>\n<pre><code>add_action('pre_get_posts', function($query) {\n    if ($query-&gt;is_main_query()) {\n        \/\/ Add your code here\n    }\n});<\/code><\/pre>\n<p>Du b\u00f6r alltid kontrollera <code>is_main_query()<\/code>objektet som tillhandah\u00e5lls i <code>pre_get_posts<\/code>. L\u00e4s <a href=\"https:\/\/developer.wordpress.org\/reference\/hooks\/pre_get_posts\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dokumentationen f\u00f6r pre_get_posts<\/a> f\u00f6r mer information.<\/p>\n<p>Det h\u00e4r \u00e4r ett exempel p\u00e5 att kontrollera om vi inte \u00e4r i admin, och om vi \u00e4r vid huvudinl\u00e4ggsfr\u00e5gan:<\/p>\n<pre><code>add_action('pre_get_posts', function($query) {\n    if (!is_admin() &amp;&amp; $query-&gt;is_main_query()) {\n        \/\/ Add your code here\n    }\n});<\/code><\/pre>\n<h2>\u00c4ndra eller l\u00e4gga till argument<\/h2>\n<p>Eftersom vi arbetar med ett <code>WP_Query<\/code>objekt kan du h\u00e4nvisa till <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_query\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WP_Querys dokumentation<\/a> f\u00f6r hur du bygger dina argument f\u00f6r att anpassa inl\u00e4ggsfr\u00e5gan. T\u00e4nk p\u00e5 att argumenten redan \u00e4r ifyllda. I s\u00e5 fall m\u00e5ste du l\u00e4gga till eller \u00e4ndra befintliga v\u00e4rden. Eller ta bort de du vill ta bort.<\/p>\n<p>Du anv\u00e4nder <code>set()<\/code>funktionen p\u00e5 <code>WP_Query<\/code>objektet f\u00f6r att s\u00e4tta argument. Metoden accepterar tv\u00e5 argument, argumentnyckeln och f\u00f6r det andra v\u00e4rdet. Till exempel, inst\u00e4llning av <code>posts_per_page<\/code>argumentet skulle g\u00f6ras s\u00e5 h\u00e4r:<\/p>\n<pre><code>add_action('pre_get_posts', function($query) {\n    if (!is_admin() &amp;&amp; $query-&gt;is_main_query()) {\n        $query-&gt;set('posts_per_page', 20);\n    }\n});<\/code><\/pre>\n<p>I de fall du vill l\u00e4gga till eller \u00e4ndra ett redan existerande argument, skulle du vanligtvis g\u00f6ra detta genom att f\u00f6rst spara det befintliga argumentet i en variabel. Du kan anv\u00e4nda metoden <code>get()<\/code>f\u00f6r detta. Sedan modifierar du variabeln, genom att l\u00e4gga till eller sl\u00e5 samman arrayer eller vad inte. Och slutligen anv\u00e4nder du <code>set()<\/code>f\u00f6r att ers\u00e4tta den modifierade variabeln tillbaka till fr\u00e5geobjektet. Jag rekommenderar att du anv\u00e4nder <code>var_dump()<\/code>p\u00e5 objektet f\u00f6r att se vad det inneh\u00e5ller, och det h\u00e4r \u00e4r ocks\u00e5 ett bra s\u00e4tt att kontrollera om dina villkorliga taggar \u00e4r korrekta.<\/p>\n<p>H\u00e4r \u00e4r ett snabbt exempel p\u00e5 hur du anv\u00e4nder <code>get()<\/code>(kolla helt enkelt om det \u00e4r tomt), och i s\u00e5 fall l\u00e4gg till dina egna argument med <code>set()<\/code>.<\/p>\n<pre><code>add_action('pre_get_posts', function($query) {\n    if (!is_admin() &amp;&amp; $query-&gt;is_main_query()) {\n        if (!$query-&gt;get('meta_query')) {\n            $query-&gt;set('meta_query', [\/ your arguments here \/]);\n        }\n    }\n});<\/code><\/pre>\n<h3>Anm\u00e4rkning om tax_query<\/h3>\n<p>WordPress har separata underklasser f\u00f6r hantering av taxonomidelen (<code>WP_Tax_Query<\/code>) inom <code>WP_Query<\/code>. Om du beh\u00f6ver g\u00f6ra mer komplexa modifieringar av taxonomifr\u00e5gor kan <code>pre_get_posts<\/code>\u00e5tg\u00e4rden vara f\u00f6r tidig. Vissa v\u00e4rden kan vara tomma eftersom de fylls i senare. I det h\u00e4r fallet kan det vara b\u00e4ttre att anv\u00e4nda \u00e5tg\u00e4rden <code>parse_tax_query<\/code>ist\u00e4llet f\u00f6r <code>pre_get_posts<\/code>. L\u00e4s <a href=\"https:\/\/developer.wordpress.org\/reference\/hooks\/parse_tax_query\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dokumentationen f\u00f6r denna krok<\/a> f\u00f6r att se om detta \u00e4r n\u00e5got f\u00f6r dig.<\/p>\n<h2>Slutsats<\/h2>\n<p>Argumenten du l\u00e4gger till eller \u00e4ndrar beror helt p\u00e5 vad du vill g\u00f6ra, men du b\u00f6r nu ha lite insikt i strategier f\u00f6r att f\u00e5 tag i den globala fr\u00e5gan. Om du beh\u00f6ver f\u00e5 lite insikt i <code>WP_Query<\/code>objektet och hur man anv\u00e4nder dess argument kan mitt inl\u00e4gg om <a href=\"http:\/\/awhitepixel.com\/blog\/how-to-query-posts-in-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">hur man fr\u00e5gar efter inl\u00e4gg<\/a> vara av intresse.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I det h\u00e4r inl\u00e4gget kommer vi att l\u00e4ra oss hur man \u00e4ndrar den globala WordPress-fr\u00e5gan, vilken krok som ska anv\u00e4ndas och hur man \u00e4ndrar argumenten efter v\u00e5r smak.<\/p>\n","protected":false},"author":1,"featured_media":152576,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[901,838,848,901,922,1110,922,838,848,868,868],"tags":[1173],"class_list":["post-233641","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-koda","category-guide-foer-nyboerjare","category-handledningar","category-oevrig","category-n-a","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/233641","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=233641"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/233641\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/152576"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=233641"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=233641"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=233641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}