{"id":230667,"date":"2022-12-15T20:26:00","date_gmt":"2022-12-15T17:26:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230667"},"modified":"2022-12-07T11:39:10","modified_gmt":"2022-12-07T08:39:10","slug":"kohandatud-arhiivimallid-luehike-juhend","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/kohandatud-arhiivimallid-luehike-juhend\/","title":{"rendered":"Kohandatud arhiivimallid: l\u00fchike juhend"},"content":{"rendered":"\n<p>Kui t\u00f6\u00f6tate WordPressis arhiivimallidega, loetletakse postitused tavaliselt kuup\u00e4eva j\u00e4rgi kahanevas j\u00e4rjekorras. See t\u00e4hendab, et k\u00f5ige v\u00e4rskemad postitused on loetletud \u00fclaosas ja sealt edasi l\u00e4heb.<\/p>\n<p>Viimasel ajal olen t\u00f6\u00f6tanud m\u00f5ne projekti kallal, mis integreeritakse kolmandate osapoolte API-dega. Nende API-de tagastuskuup\u00e4evad (m\u00f5nikord kaks kuup\u00e4eva, alguskuup\u00e4ev ja l\u00f5ppkuup\u00e4ev) antud s\u00fcndmuse jaoks ja kliendid soovivad seda teavet kasutada postituste loetlemiseks, mitte postituse kuup\u00e4eva. See t\u00e4hendab, et nad tahavad kohandatud arhiivimalle.<\/p>\n<p>Seda pole liiga raske teha, kuid arvan, et enne seda on oluline anda taustateavet selle kohta, kuidas projekt on \u00fcles ehitatud, et oleks natuke rohkem konteksti selle kohta, miks n\u00e4iteks on vaja kohandatud p\u00e4ringut ja miks seda v\u00f5ib teha v\u00f5i v\u00f5ib. ei pea uurima <a href=\"https:\/\/codex.wordpress.org\/Plugin_API\/Action_Reference\/pre_get_posts\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">jaotist pre_get_posts<\/a>.<\/p>\n<p>Ma alustan siiski k\u00f5igepealt TL;DR-iga. Nii saate enne kogu asja lugemist aimu.<\/p>\n<h2>Kohandatud arhiivimallid<\/h2>\n<p>Nii et TL; DR kogu asja taga on j\u00e4rgmine:<\/p>\n<ul>\n<li>kolmanda osapoole API pakutavat kuup\u00e4evateavet hoitakse metaandmete tabelis,<\/li>\n<li>v\u00f5ti on alguskuup\u00e4ev ja v\u00e4\u00e4rtus on tegelik kuup\u00e4ev,<\/li>\n<li>J\u00e4rjestan sisu kahanevas j\u00e4rjekorras ja metav\u00e4\u00e4rtuse j\u00e4rgi.<\/li>\n<\/ul>\n<p>Lehtede lehitsemine v\u00f5ib olla pisut probleemne ja kui kasutate kohandatud postituse t\u00fc\u00fcpi, on teil vaja lisaparameetreid, kuid \u00fcldine idee on olemas.<\/p>\n<p>N\u00fc\u00fcd kogu seadest.<\/p>\n<h3>Kohandatud postituste t\u00fc\u00fcbid<\/h3>\n<p>Mis puutub liidestesse kolmandate osapoolte API-dega, siis olen suur kohandatud postitust\u00fc\u00fcpide f\u00e4nn, sest kipun neid pidama mudelite ja vaadete h\u00fcbriidiks.<\/p>\n<ul>\n<li>Mudeli komponent sisaldab k\u00f5ike, mis on puutujaga seotud ja mida saab andmebaasi kirjutada. See t\u00e4hendab mis tahes taksonoomia teavet v\u00f5i postituse metaandmeid.<\/li>\n<li>Vaatekomponent on \u00fcldiselt k\u00f5ik, mis l\u00e4heb malli, mis v\u00f5ib kasutada olemasolevaid mallisilte, on k\u00f5ik, mis v\u00f5ib tekkida vajadus luua, mis loeb teavet ka andmebaasist.<\/li>\n<\/ul>\n<p>Selle postituse jaoks kasutan kohandatud postituse t\u00fc\u00fcbina <strong>acme-s\u00fcndmust .<\/strong><\/p>\n<h3>Postitage metaandmed<\/h3>\n<p>Ma m\u00e4\u00e4ran kuup\u00e4evad pigem postituse metaandmetes kui postituses endas, sest kui midagi juhtub tulevikus ja andmed on m\u00e4\u00e4ratud postituse kirjele endale, siis WordPress k\u00e4sitleb seda <strong>ajastatud<\/strong> postitusena, mis on avaldamata .<\/p>\n<\/p>\n<p>Selle asemel tahaksin pigem postituse avaldada ja seej\u00e4rel muuta seda, kuidas mallis metaandmeid kuvatakse.<\/p>\n<h3>Lehek\u00fcljed<\/h3>\n<p>WordPress eristab oma koodibaasis peent lehek\u00fclge. Staatilise avaleheta saitide p\u00e4ringumuutuja kasutab <strong>paged<\/strong> ja vastupidisel juhul <strong>lehek\u00fclge<\/strong>.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-161511-61e724257d2b2.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-161511-61e724257d2b2.png\" alt=\"Kohandatud arhiivimallid: l\u00fchike juhend\" ><\/a><\/p>\n<p>See on oluline, kui koostate p\u00e4ringu argumente, milleni ma peagi j\u00f5uan.<\/p>\n<h3>Arhiivi ainult lehed<\/h3>\n<p>Pidage meeles, et iga kord, kui tutvustate lehek\u00fclgedele jagamist, soovite p\u00e4ringut muuta ainult siis, kui olete tegelikul arhiivi lehel.<\/p>\n<p>See t\u00e4hendab, et teid ei huvita juhtumid, kui olete WordPressi haldusalas ja te ei soovi mittekohandatud postitust\u00fc\u00fcpi arhiivide p\u00e4ringut muuta. Selleks peaksite veenduma, et seadistate p\u00e4ringumuutuja tagasihelistamisel pre_get_posts \u00f5igesti.<\/p>\n<p>Pange t\u00e4hele, et ma saan n\u00e4idata funktsiooni, kuidas seda teha, kuid kuna me WordPressis koodi kirjutame \u2013 st m\u00f5ned kirjutavad protseduurikoodi, teised objektorienteeritud koodi \u2013, kuvan selle lihtsalt protseduurikoodis.<\/p>\n<h3>Selle k\u00f5ige kokkuviimine<\/h3>\n<p>Esiteks <a href=\"https:\/\/gist.github.com\/tommcfarlin\/b1b2c403a39ebb8b907a328ab10148ac#file-00-custom-query-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">koostan p\u00e4ringu:<\/a><\/p>\n<pre><code>&lt;?php\n\n$eventQuery = new WP_Query([\n    'post_type' =&gt; 'acme-events',\n    'post_status' =&gt; 'publish',\n    'orderby' =&gt; 'meta_value',\n    'order' =&gt; 'desc',\n    'meta_key' =&gt; 'acme-event-start-date-time',\n    'posts_per_archive_page' =&gt; 5,\n    'paged' =&gt; get_query_var('paged')? get_query_var('paged'): 1\n]);<\/code><\/pre>\n<p>Pange t\u00e4hele, et \u00fclalolevas koodis on argument <strong>paged<\/strong> jaoks. Ma r\u00e4\u00e4gin kohe selle koodist.<\/p>\n<p>Seej\u00e4rel sisaldab mall mis tahes teavet, mida soovite kuvada. Otsustan selles postituses oma malli koodi mitte jagada, kuna see pole k\u00e4siloleva suurema idee jaoks asjakohane.<\/p>\n<p>Lisaks on teil k\u00f5ik sisu kuvamiseks vajalik.<\/p>\n<p>J\u00e4rgmisena m\u00e4\u00e4ran lehek\u00fcljed. Esiteks pean ma seda tegema konksu pre_get_posts abil, <a href=\"https:\/\/gist.github.com\/tommcfarlin\/b1b2c403a39ebb8b907a328ab10148ac#file-01-pre-get-posts-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">et veenduda, et \u00f5ige p\u00e4ringumuutuja on seatud<\/a> :<\/p>\n<pre><code>&lt;?php\n\nadd_action('pre_get_posts', 'setCustomQueryVariable');\npublic function setCustomQueryVariable($query)\n{\n    if (is_admin() || !is_archive()) {\n        return;\n    }\n\n    if ($query-&gt;is_archive('acme-events')) {\n        set_query_var('posts_per_page', 5);\n    }\n}<\/code><\/pre>\n<p>Seej\u00e4rel <a href=\"https:\/\/gist.github.com\/tommcfarlin\/b1b2c403a39ebb8b907a328ab10148ac#file-02-pagination-links-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">rakendan<\/a> kohandatud p\u00e4ringu abil lehek\u00fclgede jagamise:<\/p>\n<pre><code>&lt;?php\n\n&lt;a class=\"next page-numbers\" href=\"&lt;?php echo esc_attr(get_next_posts_page_link($eventQuery-&gt;max_num_pages)); ?&gt;\"&gt;\n    Next Page\n&lt;\/a&gt;\n\n&lt;a class=\"prev page-numbers\" href=\"&lt;?php echo esc_attr(get_previous_posts_page_link()); ?&gt;\"&gt;\n    Previous Page\n&lt;\/a&gt;<\/code><\/pre>\n<p>Ja p\u00e4rast seda <a href=\"https:\/\/gist.github.com\/tommcfarlin\/b1b2c403a39ebb8b907a328ab10148ac#file-03-reset-post-data-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">l\u00e4htestan globaalse $post muutuja<\/a>, kasutades wp_reset_postdata() igaks juhuks, kui on vaja kasutada m\u00f5nda asja algsest postitusest.<\/p>\n<pre><code>&lt;?php wp_reset_postdata(); ?&gt;<\/code><\/pre>\n<p>Seda peetakse \u00fcldiselt heaks majapidamiseks alati, kui kasutate kohandatud p\u00e4ringut.<\/p>\n<h3>Kasulikud lingid<\/h3>\n<p>Allpool on loetelu funktsioonidest, lehtedest ja viidetest, mis v\u00f5ivad olla kasulikud, kuna need on seotud \u00fclaltoodud koodi v\u00f5i mis tahes tulevase t\u00f6\u00f6ga, mida v\u00f5ite teha.<\/p>\n<ul>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_query\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WP_p\u00e4ring<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Pagination\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Lehek\u00fcljed<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Plugin_API\/Action_Reference\/pre_get_posts\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">pre_get_posts<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/get_query_var\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">get_query_var<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/set_query_var\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">set_query_var<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/get_next_posts_page_link\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">get_next_posts_page_link<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/get_previous_posts_page_link\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">get_previous_posts_page_link<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/update_post_meta\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">update_post_meta<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_reset_postdata\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_reset_postdata<\/a><\/li>\n<li>T\u00e4ielik <a href=\"https:\/\/gist.github.com\/tommcfarlin\/b1b2c403a39ebb8b907a328ab10148ac\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kood<\/a> selles postituses.<\/li>\n<\/ul>\n<p>Kui olete WordPressiga pikka aega t\u00f6\u00f6tanud, v\u00f5ivad m\u00f5ned neist tunduda \u00fcleliigsed. Muudel juhtudel v\u00f5ib see tunduda uus v\u00f5i see v\u00f5ib tuua valgust WordPressi API-de piirkondadele, mille olemasolust te ei teadnud (v\u00e4hemalt minu puhul oli see nii).<\/p>\n<h2>Miks selle k\u00f5igega vaeva n\u00e4ha?<\/h2>\n<p>See v\u00f5ib n\u00e4iliselt lihtsa \u00fclesande jaoks v\u00e4lja tulla pika postitusena, kuid teave on veidi \u00fcle veebi laiali, kuna see on seotud millegi sellise tegemisega.<\/p>\n<p>Seega tahtsin proovida seda k\u00f5ike koondada selgituste, n\u00e4idiskoodi ja linkidega lehtedele, mis v\u00f5ivad olenevalt juurutamise viisist huvi pakkuda.<\/p>\n<p>L\u00f5ppude l\u00f5puks kasutavad paljud meist praegu WordPressi p\u00f5hilise sisuhalduse k\u00f5rval, kuid see ei t\u00e4henda, et me ei peaks v\u00f5imalusel kasutama selle sisseehitatud funktsioone ja 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>Pidage seda kiirkursuseks kohandatud arhiivimallide ja k\u00f5igi neid \u00fcmbritsevate funktsioonide loomisel.<\/p>\n","protected":false},"author":1,"featured_media":236214,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,894,802,863],"tags":[1165],"class_list":["post-230667","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-kood","category-php-4","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/230667","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=230667"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/230667\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/236214"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=230667"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=230667"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=230667"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}