{"id":233873,"date":"2023-02-24T10:58:00","date_gmt":"2023-02-24T07:58:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233873"},"modified":"2022-11-11T12:54:56","modified_gmt":"2022-11-11T09:54:56","slug":"juhend-kuidas-wordpressis-postitusi-paeringuid-teha","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/juhend-kuidas-wordpressis-postitusi-paeringuid-teha\/","title":{"rendered":"Juhend: kuidas WordPressis postitusi p\u00e4ringuid teha"},"content":{"rendered":"\n<p>Millised meetodid on kohandatud postitusp\u00e4ringu tegemiseks saadaval ja millal on neid k\u00f5ige parem kasutada? Selle postituse eesm\u00e4rk on luua kindel arusaam kahest postituste p\u00e4rimise meetodist, kuidas p\u00e4\u00e4seda juurde tulemustele, kuidas luua argumente ja l\u00f5puks, kuidas p\u00e4rast seda puhastada. Kaks meetodit, mida me vaatleme, on <code>get_posts()<\/code>ja <code>WP_Query<\/code>.<\/p>\n<p>Kui tegemist on uue postituse p\u00e4ringu tegemisega, on (kirjutamise ajal) kaks v\u00f5imalust. Valik s\u00f5ltub t\u00f5esti teie eelistustest (ja m\u00f5nest v\u00e4iksemast tulemuslikkusest). \u00dcks v\u00f5imalus v\u00f5ib teie praegu kasutatava globaalse ahela\/p\u00e4ringu segi ajada, kui te seda \u00f5igesti ei k\u00e4sitle. \u00dche valikuga k\u00e4sitlete objekte ja teise valiku korral massiivi. Postitusp\u00e4ringu kohandamise argumendid on aga identsed.<\/p>\n<h2>Globaalne p\u00e4ring?<\/h2>\n<p>Kui te pole kindel, mida ma m\u00f5tlen terminiga &quot;globaalse p\u00e4ringu segamine&quot;, siis see on see. WordPress teeb alati \u00fche globaalse p\u00e4ringu, olenevalt sellest, millisel lehel olete. Kui k\u00fclastaja k\u00fclastab kategooriaarhiivi, on WordPress teinud selle kohta postitusp\u00e4ringu. Teema p\u00e4\u00e4seb tavaliselt p\u00e4ringu postitustele juurde, kasutades &quot;silmust&quot;. Kui teeme uue p\u00e4ringu, millel on selle ts\u00fckli sees oma ts\u00fckkel, peame tagama, et WordPressi globaalset p\u00e4ringut ja meie p\u00e4ringut k\u00e4sitletakse eraldi.<\/p>\n<p>Kui soovite aga WordPressi postitusp\u00e4ringut muuta, on see teine \u200b\u200blugu. Mul on <a href=\"http:\/\/awhitepixel.com\/blog\/modifying-wordpress-global-query\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">veel \u00fcks postitus<\/a>, mis k\u00e4sitleb seda, kuidas seda teha.<\/p>\n<p>Vaatame kahte v\u00f5imalust, mis meil on ja kuidas me nendega tegeleme. P\u00e4rast seda vaatame p\u00e4ringu kohandamise argumente. Pidage meeles, et m\u00f5lema argumendid on identsed.<\/p>\n<h2><strong>Postituste p\u00e4ringute tegemise kaks meetodit<\/strong><\/h2>\n<p>Postituste kohta saate p\u00e4ringuid teha kas funktsiooniga <code>get_posts()<\/code>v\u00f5i uue eksemplari loomisega <code>WP_Query.<\/code>. Esimene valik tagastab postituste massiivi ja teises k\u00e4sitlete objekti. Kuna <code>get_posts()<\/code>tagastab massiivi ainult postitustest, on seda tavaliselt lihtsam kasutada k\u00f5ikjal, kus soovite. Kui aga soovite oma p\u00e4ringut lehek\u00fclgedele lisada, peaksite kindlasti looma <code>WP_Query<\/code>eksemplari.<\/p>\n<p>Funktsioon <code>get_posts<\/code>on \u00fcmbrisfunktsioon, <code>WP_Query<\/code>mis t\u00e4hendab, et see aktsepteerib samu argumente, kuid <code>get_posts<\/code>sellel on m\u00f5ned t\u00e4iendavad &quot;aliase&quot; argumendid. WordPressi dokumentatsioonileht <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/get_posts\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">get_posts<\/a> jaoks ei loetle v\u00f5imalikke argumente (v\u00e4lja arvatud pseudon\u00fc\u00fcmi argumendid), vaid viitab argumentide jaoks <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_query\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WP_Query<\/a> dokumentatsioonilehele. Vaatleme argumente hiljem l\u00e4hemalt.<\/p>\n<p>Kui toimivus on probleem (st saidil on palju postitusi), <code>get_posts<\/code>on see kiirem kui kasutamine, <code>WP_Query<\/code>kuna j\u00e4tab lehek\u00fclgede arvu arvutamise vahele.<\/p>\n<p>Kohandatud postitusp\u00e4ringu l\u00e4bimise meetod erineb olenevalt valitud meetodist. Peaksite olema tuttav tavalise WordPressi ts\u00fckliga, mida kasutatakse peaaegu k\u00f5igis teemamallides:<\/p>\n<pre><code>if (have_posts()) {\n    while (have_posts()): the_post();\n        \/\/ Access to each post; you can use template tags here\n    endwhile;\n}<\/code><\/pre>\n<h3><strong>Looming WP_Query abil<\/strong><\/h3>\n<p>Kasutamise tulemuste <code>WP_Query<\/code>loomine on t\u00e4pselt sama, v\u00e4lja arvatud see, et viitame konkreetselt ts\u00fcklis esinevale eksemplariobjektile. Peame meeles pidama ka oleku l\u00e4htestamist p\u00e4rast silmuste loomist, nii et globaalne postitusobjekt naaseb sellele, mis see oli. Selleks kasutame <code>wp_reset_postdata()<\/code>.<\/p>\n<pre><code>$custom_query = new WP_Query([\/ Arguments here \/]);\nif ($custom_query-&gt;have_posts()) {\n    while ($custom_query-&gt;have_posts()): $custom_query-&gt;the_post();\n        \/\/ Access to each post; you can use template tags here\n    endwhile;\n    wp_reset_postdata();\n}<\/code><\/pre>\n<p>Kui t\u00fchjendate objekti, mille instantseerib <code>WP_Query<\/code>( <code>$custom_query<\/code>\u00fclaltoodud n\u00e4ites), leiate kogu p\u00e4ringu ja kasutatud argumendid. Huvitavad osad siin on atribuudid &quot; <code>found_posts<\/code>&quot; ja &quot; <code>posts<\/code>&quot;. Atribuut &quot; <code>posts<\/code>&quot; sisaldab postiobjektide tulemust, millest ts\u00fckkel l\u00e4bib. Teie p\u00e4ringule vastanud postituste arv tagastatakse kaustas \u201e <code>found_posts<\/code>&quot; ja see on kasulik, kui soovite teha kohandatud lehek\u00fclgede j\u00e4rjekorda. Jagage see v\u00e4\u00e4rtus WordPressi s\u00e4ttega postituste arvu kohta lehel, et v\u00e4lja selgitada, mitu lehek\u00fclge teil oma p\u00e4ringu jaoks vaja on, v\u00f5i viidake lihtsalt atribuudile &quot; <code>max_num_pages<\/code>&quot;.<\/p>\n<p>M\u00e4rkus. Kui kasutate <code>get_posts<\/code>WordPressi, tagastab WordPress objektilt ainult <code>posts<\/code>atribuudi &quot; &quot; (mis on massiiv) .<code>WP_Query<\/code><\/p>\n<h3><strong>Looming kasutades get_posts<\/strong><\/h3>\n<p>Kasutades <code>get_posts<\/code>ei kasuta me tavalist &#8220;WordPressi ts\u00fcklit&#8221;, selle asemel kasutame tavalist PHP massiivisilmust. Iga massiivi element on postiobjekt ja p\u00e4rast silmuse loomist pole l\u00e4htestamine vajalik. Pidage meeles, et mallisildid (nt <code>the_title()<\/code>jne <code>the_permalink()<\/code>) pole selles ts\u00fcklis saadaval. Peate viitama postitusobjekti omadustele (nt <code>$custom_post-&gt;ID<\/code>).<\/p>\n<pre><code>$custom_query = get_posts([\/ Arguments here \/]);\nforeach ($custom_query as $custom_post) {\n    \/\/ Template tags are not available here, refer to the post object properties, for example:\n    echo $custom_post-&gt;post_title;\n}<\/code><\/pre>\n<p>Soovitan oma postitusobjektidele anda teistsuguse nime kui <code>$post<\/code>. Postituse atribuutidele juurde p\u00e4\u00e4sedes v\u00f5ib tekkida probleeme (see v\u00f5ib viidata globaalsele postitusobjektile, mitte ts\u00fcklis olevale postitusele).<\/p>\n<p>Kui soovite postitusteabe lihtsamaks juurdep\u00e4\u00e4suks kasutada <a href=\"https:\/\/codex.wordpress.org\/Template_tags#Post_tags\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">mallisilte<\/a> (nt <code>the_title()<\/code>ja <code>the_permalink()<\/code>), saate seda teha. Selleks k\u00e4ske WordPressil seadistada ts\u00fckli sees globaalne postitusobjekt koos <code>setup_postdata()<\/code>. Kui teete seda, peate l\u00e4htestama oleku <code>wp_reset_postdata()<\/code>p\u00e4rast silmust.<\/p>\n<pre><code>$custom_query = get_posts([\/ Arguments here \/]);\nforeach ($custom_query as $post) {\n    setup_postdata($post);\n    \/\/ Template tags are available here, for example:\n    the_title();\n}\nwp_reset_postdata();<\/code><\/pre>\n<p>Pidage meeles, et <code>setup_postdata<\/code>objektid, mida l\u00e4bite (&quot; <code>as<\/code>&quot; osa foreach-ts\u00fcklis), peavad olema nimed <code>$post<\/code>! Esimeses n\u00e4ites nimetasin postituse objektid <code>$custom_post<\/code>ja see ei t\u00f6\u00f6taks koos <code>setup_postdata()<\/code>.<\/p>\n<p>Kui aga vajate juurdep\u00e4\u00e4su p\u00f5hilisele postitusteabele, v\u00f5ite globaalse postitusobjekti seadistamise ka vahele j\u00e4tta ja pigem kasutada vastavaid &quot; <code>get_<\/code>&quot;-malli silte ja postituse ID-d. N\u00e4iteks silt <code>the_permalink()<\/code>t\u00f6\u00f6tab \u00f5igesti ainult siis, kui globaalne postitusobjekt on seadistatud, kuid saate taotleda postituse p\u00fcsilinki ilma globaalse postitusobjektita, kasutades lihtsalt <code>echo get_the_permalink($custom_post-&gt;ID)<\/code>.<\/p>\n<h2><strong>P\u00e4ringuargumendid<\/strong><\/h2>\n<p>K\u00f5igi v\u00f5imalike argumentide t\u00e4ieliku loendi leiate <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_query\/#parameters\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WP_Query dokumentatsiooni lehelt<\/a>. Parameetrite n\u00e4ideteks on postitused, mis sisaldavad taksonoomiast kindlat terminit, postituse metav\u00e4\u00e4rtused, postituste t\u00fc\u00fcbid, konkreetsete postituste kaasamine v\u00f5i v\u00e4listamine ning terve hulk tulemuste j\u00e4rjestamise v\u00f5imalusi. Neid on liiga palju, et iga\u00fcks neist \u00fcksikasjalikult l\u00e4bi k\u00e4ia, kuid siin on m\u00f5ned levinumad n\u00e4ited postituste p\u00e4ringute esitamise argumentidest.<\/p>\n<h3>N\u00e4ide 1: seotud postitused samast kategooriast<\/h3>\n<p>Oletame, et soovite \u00fche postituse l\u00f5pus kuvada &quot;seotud postitused&quot;. See peaks n\u00e4itama juhuslikult valitud 3 postitust, mis on praeguse postitusega samas kategoorias, ja see peaks praeguse postituse tulemusest v\u00e4lja j\u00e4tma.<\/p>\n<pre><code>$post_id = get_the_ID();  \/\/ current post ID\n$custom_query = new WP_Query([\n    'post_type' =&gt; 'post',\n    'posts_per_page' =&gt; 3,\n    'category__in' =&gt; wp_get_post_categories($post_id),\n    'post__not_in' =&gt; [$post_id],\n    'orderby' =&gt; 'rand'\n]);<\/code><\/pre>\n<p>Argumendid on \u00fcsna iseenesestm\u00f5istetavad. Ma palun ainult &#8216; <code>post<\/code>&quot; in &quot; <code>post_type<\/code>&quot; ja maksimaalselt 3 postitust &quot; <code>posts_per_page'<\/code>.<\/p>\n<p>Kategooriate kaupa postituste p\u00e4ringute tegemiseks saate koostada <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_query\/#taxonomy-parameters\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">tax_query<\/a> v\u00f5i kasutada lihtsamat &quot; <code>category__in<\/code>&quot; (NB: t\u00f6\u00f6tab ainult postituste kategooria puhul). \u00dclaltoodud n\u00e4ites kasutan ma <code>wp_get_post_categories()<\/code>pakutud postitusele m\u00e4\u00e4ratud termini ID-de massiivi saamiseks ja kasutan seda argumendi &quot; <code>category__in<\/code>&quot; jaoks.<\/p>\n<p>Postituse ID-d saate v\u00e4listada m\u00e4rkega \u201e <code>post__not_in<\/code>&#8220;, samas kui mina esitasin praeguse postituse ID. L\u00f5puks k\u00fcsisin postituste juhuslikku j\u00e4rjekorda, m\u00e4\u00e4rates &#8216; <code>rand<\/code>&#8216; sisse &quot; <code>orderby<\/code>&quot;. Nende erinevaks j\u00e4rjestamiseks v\u00f5ite lisada nt &quot; <code>title<\/code>&quot; v\u00f5i &quot; &quot;. <code>date<\/code>Vaadake <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_query\/#order-orderby-parameters\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">tellimise dokumentatsiooni,<\/a> et n\u00e4ha, mis on v\u00f5imalik.<\/p>\n<h3>N\u00e4ide 2: k\u00f5ik postitused kohandatud postitust\u00fc\u00fcbist koos mitme j\u00e4rjestamisargumendiga<\/h3>\n<p>Selles n\u00e4ites eeldame, et teil on kohandatud postituse t\u00fc\u00fcp &quot; <code>book<\/code>&quot; ja kohandatud lehemallis soovite kuvada k\u00f5ik avaldatud raamatud. Soovite postitusi j\u00e4rjestada eelk\u00f5ige menu_order (lehe atribuut, see on number, mille saate postituse kohta m\u00e4\u00e4rata) ja teiseks postituse pealkirja j\u00e4rgi.<\/p>\n<pre><code>$custom_query = new WP_Query([\n    'post_type' =&gt; 'book',\n    'posts_per_page' =&gt; -1,\n    'orderby' =&gt; ['meny_order' =&gt; 'ASC', 'title' =&gt; 'DESC']\n]);<\/code><\/pre>\n<p>J\u00e4llegi on argumendid \u00fcsna iseenesestm\u00f5istetavad. Soovin postituse t\u00fc\u00fcp &quot; <code>book<\/code>&quot; kui &quot; <code>post_type<\/code>&quot;. Kui seate &quot; <code>posts_per_page<\/code>&quot; v\u00e4\u00e4rtuseks -1, hangitakse k\u00f5ik (avaldatud postitused, kui te ei m\u00e4\u00e4ra <code>post_status<\/code>argumendis &quot; &quot; midagi muud). L\u00f5puks pakun massiivi &quot; <code>orderby<\/code>&quot;, et k\u00e4skida WordPressil postitusi sortida peamiselt men\u00fc\u00fcj\u00e4rjestuse j\u00e4rgi kasvavas j\u00e4rjekorras ja teiseks postituse pealkirja kahanevas j\u00e4rjekorras.<\/p>\n<h3>N\u00e4ide 3: kohandatud metaandmetega postitused<\/h3>\n<p>Oletame, et teil on kohandatud postituse t\u00fc\u00fcp <code>book<\/code>ja soovite esitada p\u00e4ringu k\u00f5igi raamatute kohta, mis on avaldamata v\u00f5i mis on avaldatud aastatel 1990\u20132019.<\/p>\n<pre><code>$custom_query = new WP_Query([\n    'post_type' =&gt; 'book',\n    'posts_per_page' =&gt; -1,\n    'meta_query' =&gt; [\n        'relation' =&gt; 'OR',\n        [\n            'key' =&gt; 'book_status',\n            'value' =&gt; 'unpublished',\n            'compare' =&gt; '='\n        ],\n        [\n            'key' =&gt; 'year_published',\n            'value' =&gt; [1990, 2019],\n            'type' =&gt; 'numeric',\n            'compare' =&gt; 'BETWEEN'\n        ]\n    ]\n]);<\/code><\/pre>\n<p>P\u00e4ringu koostamine post-meta abil on k\u00f5ige parem teha <code>meta_query<\/code>(v\u00e4ga lihtsate metaargumentide jaoks saate kasutada <code>meta_key<\/code>ja <code>meta_value<\/code>otse). Argument &quot; <code>meta_query<\/code>&quot; n\u00f5uab massiivi, kus iga argument on massiiv. Iga argumendi vahelist seost saate juhtida parameetriga &quot; <code>relation<\/code>&quot;, mille ma <code>OR<\/code>\u00fclaltoodud n\u00e4ites m\u00e4\u00e4rasin v\u00e4\u00e4rtuseks &quot; &quot;.<\/p>\n<p>Esitan kaks metaandmete argumenti &quot; <code>meta_query<\/code>&quot;. Esimene v\u00f5rdleb lihtsalt metav\u00f5tit &quot; <code>book_status<\/code>&quot; tekstiga &quot; <code>unpublished<\/code>&quot; ja kui see on v\u00f5rdne, lisatakse see. Teises argumendis \u00fctlen WordPressile, et ta hankiks metav\u00f5tmes mistahes v\u00e4\u00e4rtuse, <code>year_published<\/code>mis j\u00e4\u00e4b numbrite 1990 ja 2019 vahele.<\/p>\n<h2>J\u00e4reldus<\/h2>\n<p>N\u00fc\u00fcd peaksid teil olema p\u00f5hiteadmised kahest postituste p\u00e4rimise meetodist. Suurt erinevust pole, kuna saate m\u00f5lemat kasutades luua sama p\u00e4ringu, kuid nende kahe k\u00e4sitlemise viis on erinev. Kolm esitatud p\u00e4ringuargumentide n\u00e4idet puudutavad ainult nende p\u00e4ringute pinda, mida saate luua. T\u00e4ieliku \u00fclevaate saamiseks koos rohkete n\u00e4idetega vaadake <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_query\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WP_Query dokumentatsiooni .<\/a><\/p>\n<p>Kui teid huvitab, kuidas WordPressi globaalset p\u00e4ringut muuta, on mul selle kohta <a href=\"http:\/\/awhitepixel.com\/blog\/modifying-wordpress-global-query\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">eraldi postitus<\/a>.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Selles juhendis vaatleme kahte meetodit postituste p\u00e4rimiseks WordPressis (get_posts ja WP_Query), kuidas igale postitusele juurde p\u00e4\u00e4seda ja argumente koostada.<\/p>\n","protected":false},"author":1,"featured_media":224094,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,894,718,894,916,916,1110,842,802,802,926,926,842,863,863],"tags":[1165],"class_list":["post-233873","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-kood","category-muud","category-n-a","category-opetused","category-php-4","category-teemasid","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/233873","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=233873"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/233873\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/224094"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=233873"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=233873"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=233873"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}