{"id":233899,"date":"2023-02-25T11:13:00","date_gmt":"2023-02-25T08:13:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233899"},"modified":"2022-11-11T13:04:31","modified_gmt":"2022-11-11T10:04:31","slug":"wordpressi-teemaopetus-algajatele-12-osa-kohandatud-postituspaering","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/wordpressi-teemaopetus-algajatele-12-osa-kohandatud-postituspaering\/","title":{"rendered":"WordPressi teema\u00f5petus algajatele \u2013 12. osa: kohandatud postitusp\u00e4ring"},"content":{"rendered":"\n<p>Selles viimases \u00f5ppet\u00fckis \u00f5pime, kuidas kirjutada oma postituste p\u00e4ring ja neid l\u00e4bi vaadata, ilma et katkestaksite malli p\u00f5hits\u00fcklit. Teeme \u00fcksikute postituste jaoks malliosa, mis n\u00e4itab seotud postitusi samas kategoorias.<\/p>\n<p>Selles \u00f5ppet\u00fckis teeme seotud postituste p\u00e4ringu meie \u00fche postituse vaates, mis n\u00e4itab maksimaalselt 3 postitust, postituse t\u00fc\u00fcpi postitust, mis on samas kategoorias v\u00f5i kategooriates kui postitus, mille juures praegu oleme, v\u00e4lista praegune postitus ise, ja randomiseerige kuvatud postitused. Uurime ka strateegiaid, kuidas pesastatud ts\u00fcklit sassi mitte ajada.<\/p>\n<h2>Seotud postituste mall<\/h2>\n<p>Teeme seotud postitused bitti malli osaks, millest saime teada <a href=\"http:\/\/awhitepixel.com\/blog\/wordpress-theme-tutorial-for-beginners-part-10-fleshing-out-templates\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">10 osas<\/a>. Nii ei tee me liiga <code>single.php<\/code>keeruliseks ja muudame oma koodi korduvkasutatavamaks. Asetage selle uue malliosa taotlus kuhu iganes soovite. Panen selle vahetult enne kommentaaride malli taotlemist:<\/p>\n<pre><code>...\n    &lt;\/article&gt;\n    &lt;?php \n    get_template_part('related-posts');\n    if (comments_open()) {\n        comments_template();\n    }\n    endwhile;\n...<\/code><\/pre>\n<p>N\u00fc\u00fcd loome oma teemakausta uue t\u00fchja faili ja paneme sellele nimeks <code>related-posts.php<\/code>. Selle failiga oleme valmis sukelduma kohandatud postitusp\u00e4ringu loomisesse.<\/p>\n<h2>Kohandatud postituse p\u00e4ring<\/h2>\n<p>Kui soovite teha postituste kohta kohandatud p\u00e4ringu, on teil m\u00f5ned v\u00f5imalused, kuid soovitan klassiga harjuda <code>WP_Query<\/code>. <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_query\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Lisage see dokumentatsioonileht<\/a> j\u00e4rjehoidjatesse, kuna sellele sageli viitate, kuna valikuid on nii palju. N\u00e4itan teile praktilist n\u00e4idet p\u00e4ringu seadistamisest, viidates iga spetsifikatsiooni dokumentatsioonile, mida tahame lisada.<\/p>\n<p>Kui soovite rohkem teada saada, kuidas postitusi p\u00e4ringuid teha, on mul <a href=\"http:\/\/awhitepixel.com\/blog\/how-to-query-posts-in-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">postitus<\/a>, mis k\u00e4sitleb just seda p\u00f5hjalikult.<\/p>\n<p>Kohandatud postitusp\u00e4ringu tegemiseks kutsume v\u00e4lja <code>new WP_Query()<\/code>, edastame sellele argumentide massiivi ja salvestame selle tulemuse muutujasse. Ja siis kasutame t\u00e4pselt sama ts\u00fcklit, mida oleme varem oma mallides kasutanud (v\u00f5rdluseks vaadake <a href=\"http:\/\/awhitepixel.com\/blog\/wordpress-theme-tutorial-for-beginners-part-4-accessing-posts-with-the-loop\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">siin algset ts\u00fcklit ).<\/a> Kuid me peame \u00fctlema ts\u00fcklile, et see l\u00e4biks muutuja, mitte globaalse (mis on \u00fcks postitus).<\/p>\n<p>Kui lisate selle kohandatud p\u00e4ringule, n\u00e4eb see v\u00e4lja j\u00e4rgmine:<\/p>\n<pre><code>$related_posts = new WP_Query([\n    \/\/ Arguments here\n]);\nif ($related_posts-&gt;have_posts()) {\n    while ($related_posts-&gt;have_posts()): $related_posts-&gt;the_post();\n        \/\/ Access to each post here\n    endwhile;\n    wp_reset_postdata();\n}<\/code><\/pre>\n<p>Nagu n\u00e4ete, on silmus t\u00e4pselt sama, kasutades <code>have_posts<\/code>ja <code>the_post<\/code>. Erinevus seisneb selles, et kutsume need <code>$related_posts<\/code>objektile. Kui j\u00e4tame selle <code>$related_posts<\/code>osa vahele, eeldab WordPress automaatselt, et see on postituste globaalne p\u00e4ring.<\/p>\n<p>Samuti v\u00f5ite m\u00e4rgata funktsioonikutset <code>wp_reset_postdata()<\/code>kohe p\u00e4rast ts\u00fcklit. Nii me &quot;koristame enda j\u00e4relt&quot; p\u00e4rast kohandatud p\u00e4ringut rakendusega <code>WP_Query<\/code>. Pidage meeles, et see <code>the_post()<\/code>seadistab globaalse postitusobjekti, et saaksime kasutada <code>the_title()<\/code>jne. Ja kuna oleme juba ts\u00fcklis (see, mis asub <code>single.php<\/code>), peame veenduma, et puhastame ja l\u00e4htestame postituse tagasi \u00fchele postitusele p\u00e4rast seda, kui oleme l\u00f5petanud. Kui me j\u00e4relandmeid ei l\u00e4htesta, viitab k\u00f5ik p\u00e4rast seda viimasele seotud postitusele, mille l\u00e4bisime. See v\u00f5ib olla suur probleem! Meie n\u00e4ites sellele j\u00e4rgneb kommentaaride mall. L\u00e4htestamise v\u00e4ljaj\u00e4tmisel kuvatakse kommentaarimallis viimase seotud postituse kommentaare. Ja mitte \u00fcksainus postitus, mida me tegelikult vaatame!<\/p>\n<h3>Meie kohandatud ts\u00fckli rakendamine<\/h3>\n<p>Olgu, alustame kohandatud ts\u00fckli juurutamist meie <code>related-posts.php<\/code>. Lisasin \u00fcmbrise ja pealkirja, kuid nagu tavaliselt, saate HTML-i vastavalt soovile kohandada:<\/p>\n<pre><code>&lt;div class=\"related-posts\"&gt;\n    &lt;h2&gt;&lt;?php _e('Related posts', 'wptutorial'); ?&gt;&lt;\/h2&gt;\n    &lt;?php\n    $related_posts = new WP_Query([\n    ]);\n    if ($related_posts-&gt;have_posts()) {\n        while ($related_posts-&gt;have_posts()): $related_posts-&gt;the_post();\n\u00a0\n        endwhile;\n        wp_reset_postdata();\n    }\n    ?&gt;\n&lt;\/div&gt;<\/code><\/pre>\n<p>N\u00fc\u00fcd n\u00e4eme malli osades korduvkasutatavuse v\u00f5imsust. Oletame, et selle kohandatud ts\u00fckli sees tahame n\u00e4idata t\u00e4pselt sama sisu <code>content-loop.php<\/code>, mida me oma arhiivimallides kasutame. Peame vaid taotlema seda malliosa meie kohandatud ts\u00fcklis, kas oleme valmis iga postituse v\u00e4ljundit k\u00e4sitlema!<\/p>\n<pre><code>...\n    while ($related_posts-&gt;have_posts()): $related_posts-&gt;the_post();\n        get_template_part('content-loop');\n    endwhile;\n...<\/code><\/pre>\n<p>N\u00fc\u00fcd j\u00e4\u00e4b \u00fcle vaid lisada oma postitusp\u00e4ringule argumendid, veendudes, et toome selle, mida tahame. Vaatame argumendid \u00fckshaaval l\u00e4bi.<\/p>\n<h2>Argumentide loomine meie kohandatud postitusp\u00e4ringu jaoks<\/h2>\n<p>Soovime tuua mitte rohkem kui 3 postitust. Dokumentatsioonis (jaotises &quot;Pagineerimisparameetrid&quot;) on selle argument <code>posts_per_page<\/code>. Seega lisame massiivi elemendi:<\/p>\n<pre><code>'posts_per_page' =&gt; 3<\/code><\/pre>\n<p>Tahame olla kindlad, et WordPress t\u00f5mbaks postitusi, mitte lehti v\u00f5i midagi muud. Jaotises &quot;Postituse t\u00fc\u00fcbi parameetrid&quot; leiame:<\/p>\n<pre><code>'post_type' =&gt; 'post'<\/code><\/pre>\n<p>Tahame v\u00e4ltida seda, et \u00fcksainus postitus, mille juures oleme, ei ilmuks meie seotud postituste p\u00e4ringusse, sest sellel pole m\u00f5tet, eks? Dokumentatsioon \u00fctleb meile jaotises \u201ePostitus ja lehe parameetrid&quot;, et saame massiivi lisada postituse ID <code>post__not_in<\/code>:<\/p>\n<pre><code>'post__not_in' =&gt; [get_the_ID()]<\/code><\/pre>\n<p>Samuti tahame postitusi randomiseerida; sest vaikimisi hangib see uusimad avaldatud postitused ja see v\u00f5ib postituste l\u00e4bimisel kiiresti \u00fcsna korduvaks muutuda. \u00d5nneks on WordPressil selle jaoks postituste j\u00e4rjestamise funktsioon; jaotisest &quot;Tellimine ja j\u00e4rjestamine parameetrite j\u00e4rgi&quot; leiame:<\/p>\n<pre><code>'orderby' =&gt; 'rand'<\/code><\/pre>\n<p>L\u00f5puks tahame esitada p\u00e4ringu postituste kohta, mis on samades kategooriates kui meie postitus. Selleks peame esmalt, enne p\u00e4ringu argumente, viima kategooriad \u00fche postituse juurde, kus me oleme. Jaotises \u201eKategooria parameetrid&#8221; n\u00e4eme, et saame pakkuda kategooria ID-de massiivi <code>category__in<\/code>. \u00d5nneks on WordPressil funktsioon postituse kategooria ID hankimiseks; <code>wp_get_post_categories()<\/code>mida saame kasutada otse parameetri v\u00e4\u00e4rtusena. T\u00e4iuslik!<\/p>\n<p>Siin on viimane p\u00e4ring ja selle argumendid:<\/p>\n<pre><code>...\n&lt;?php\n    $post_cats = wp_get_post_categories(get_the_ID());\n    $related_posts = new WP_Query([\n        'post_type' =&gt; 'post',\n        'posts_per_page' =&gt; 3,\n        'category__in' =&gt; $post_cats,\n        'post__not_in' =&gt; [get_the_ID()],\n        'orderby' =&gt; 'rand'\n    ]);\n    if ($related_posts-&gt;have_posts()) {\n...<\/code><\/pre>\n<p>V\u00e4rskendage ja peaksite n\u00e4gema \u00fche vaate allosas 3 postitust. V\u00e4rskendage mitu korda, et n\u00e4ha, et need muutuvad, kuna k\u00e4skisime WordPressil need juhuslikult jagada. M\u00e4rkus. Kui teil on samas kategoorias v\u00e4hem kui 3 postitust, saate alla 3 postituse.<\/p>\n<p>See on k\u00f5ik! N\u00fc\u00fcd teate, kuidas teha p\u00e4ringuid mis tahes postituste kohta, mida soovite. WP_Query <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_query\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dokumentatsioonileht<\/a> on p\u00e4ringu kohandamisel v\u00e4ga kasulik, sest siin on t\u00f5esti piiramatud v\u00f5imalused. Soovitan teil parameetritega ringi m\u00e4ngida ja v\u00f5ib-olla proovige teha seotud postituste jaoks eraldi malliosa.<\/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 WordPressi teema \u00f5ppet\u00fckis saate teada, kuidas kirjutada oma postituste p\u00e4ring ja neid l\u00e4bi vaadata, ilma et katkestaksite malli p\u00f5hits\u00fcklit.<\/p>\n","protected":false},"author":1,"featured_media":223852,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,894,718,833,894,916,916,1110,842,833,926,926,842,863,863],"tags":[1165],"class_list":["post-233899","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-kood","category-juhend-algajatele","category-muud","category-n-a","category-opetused","category-teemasid","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/233899","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=233899"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/233899\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/223852"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=233899"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=233899"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=233899"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}