{"id":233914,"date":"2023-02-25T10:30:00","date_gmt":"2023-02-25T07:30:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233914"},"modified":"2022-11-11T13:09:32","modified_gmt":"2022-11-11T10:09:32","slug":"wordpressi-teemaopetus-algajatele-10-osa-rohkemate-mallide-lisamine","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/wordpressi-teemaopetus-algajatele-10-osa-rohkemate-mallide-lisamine\/","title":{"rendered":"WordPressi teema\u00f5petus algajatele \u2013 10. osa: rohkemate mallide lisamine"},"content":{"rendered":"\n<p>Selles algajatele m\u00f5eldud WordPressi teema\u00f5petuse \u00f5ppet\u00fckis sukeldume l\u00e4hemalt mallidesse. \u00d5pime tundma mallide osi ja rakendame seda korduvkasutatavaks. Ja me lisame oma teemasse rohkem WordPressi vaikemalle.<\/p>\n<p>Kuid enne mallifailide lisamist peame teadma, miks peaksime malliosadega vaeva <strong>n\u00e4gema<\/strong>.<\/p>\n<h2>Malli osad: paindlikumad ehitusplokid<\/h2>\n<p>Malli osad t\u00f6\u00f6tavad t\u00e4pselt nii, nagu <code>get_header()<\/code>me <code>get_footer()<\/code>\u00f5ppisime <a href=\"http:\/\/awhitepixel.com\/blog\/wordpress-theme-tutorial-for-beginners-part-2-building-blocks\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">2 osas<\/a>, kuid ei piirdu nende failidega. Saate kasutada malli osi mis tahes faili jaoks, mida soovite!<\/p>\n<p>Teemad kasutavad ts\u00fckli postituste jaoks tavaliselt malliosa. Tavaliselt kuvavad paljud mallid, nagu kategooria, arhiiv ja otsingutulemused, tavaliselt iga postituse ts\u00fcklina samal viisil. Seet\u00f5ttu on v\u00e4ga hea m\u00f5te eraldada postitusts\u00fckli v\u00e4ljund \u00fcheks failiks. Nii ei pea te seda igas mallis kordama.<\/p>\n<p>&quot;Teisendame&quot; osa olemasolevast koodist malliosadeks, enne kui hakkame rohkem malle tegema!<\/p>\n<h2>Postitusts\u00fckli malli osa loomine<\/h2>\n<p>Looge meie teemakausta uus t\u00fchi fail; kutsus <code>content-loop.php<\/code>. Saate malli osadele nimed anda nii, nagu soovite. Kuid te ei saa neid nimetada samamoodi nagu \u00fchelegi <a href=\"https:\/\/codex.wordpress.org\/File:Template_Hierarchy.png#file\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPressi m\u00e4\u00e4ratletud mallile<\/a>. Otsige meie <code>index.php<\/code>lehel \u00fcles k\u00f5ik, mis teil silmuse sees on, l\u00f5igake see v\u00e4lja ja kleepige sisse <code>content-loop.php<\/code>.<\/p>\n<p>Kasutage n\u00fc\u00fcd t\u00fchja ts\u00fckli sees <code>index.php<\/code>funktsioonikutset <code>get_template_part()<\/code>ja m\u00e4\u00e4rake oma malliosa fail parameetrina (ilma <code>.php<\/code>laiendita). Nii peaks see m\u00f5lemas failis v\u00e4lja n\u00e4gema:<\/p>\n<pre><code>...\n    while (have_posts()): the_post(); \n        get_template_part('content-loop');\n    endwhile;\n    the_posts_pagination();\n...<\/code><\/pre>\n<pre><code>&lt;article &lt;?php post_class(); ?&gt;&gt;\n    &lt;h2&gt;&lt;a href=\"&lt;?php the_permalink(); ?&gt;\" title=\"&lt;?php the_title(); ?&gt;\"&gt;&lt;?php the_title(); ?&gt;&lt;\/a&gt;&lt;\/h2&gt;\n    &lt;?php if (has_post_thumbnail()) {\n        the_post_thumbnail();\n    } ?&gt;\n    &lt;?php the_excerpt(); ?&gt;\n    &lt;?php the_category(); ?&gt;\n&lt;\/article&gt;<\/code><\/pre>\n<p>Kui v\u00e4rskendate oma esilehte, ei tohiks te vahet n\u00e4ha.<\/p>\n<p>Suurep\u00e4rane! N\u00fc\u00fcd, kui see <code>index.php<\/code>on kena ja puhas, saame seda kasutada alusena, et dubleerida rohkematesse mallidesse. Allpool k\u00e4sitlen kategooriamalli ja otsingutulemuste malli lisamist, kuid soovitan teil luua rohkem malle, et saaksite oma teema kujundamist paremini juhtida.<\/p>\n<h2>Kategooriamalli lisamine<\/h2>\n<p>Kui vaatate tagasi <a href=\"https:\/\/codex.wordpress.org\/File:Template_Hierarchy.png#file\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPressi mallide hierarhiale ,<\/a> n\u00e4ete, et postituste kategooriate puhul otsib WordPress malli nimega <code>category.php<\/code>. Esmalt loome selle.<\/p>\n<p>Tehke oma teemakaustas <code>index.php<\/code>failist koopia ja nimetage koopia \u00fcmber <code>category.php<\/code>.<\/p>\n<p>Ja see ongi k\u00f5ik. P\u00f5him\u00f5tteliselt olete valmis\u2026!<\/p>\n<p>Siiski lisame \u00fche detaili; tahame n\u00e4idata pealkirja, mis \u00fctleb meile, et oleme kategooria X postituste kategoorialehel. WordPressil on selleks funktsioon, mida saate kasutada k\u00f5igis arhiivimallides (kategooria, sildid, kuup\u00e4evaarhiivid), <code>the_archive_title<\/code>. Lisame selle silmuse ette, <code>&lt;h1&gt;<\/code>sildi sisse.<\/p>\n<pre><code>&lt;?php get_header(); ?&gt;\n&lt;h1&gt;&lt;?php the_archive_title(); ?&gt;&lt;\/h1&gt;\n&lt;?php\nif (have_posts()) {\n...<\/code><\/pre>\n<p>Kui vaatate postituse kategooria lehte, peaksite n\u00e4gema midagi sellist arhiivipealkirjaga &quot;Kategooria:&quot;. PS: Kui soovite muuta arhiivi pealkirja v\u00e4ljundit (n\u00e4iteks mitte n\u00e4idata &quot;Category: &quot;), saate lisada filtri <a href=\"https:\/\/developer.wordpress.org\/reference\/hooks\/get_the_archive_title\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">get_the_archive_title<\/a>. Dokumentatsioonilehel on suurep\u00e4rane n\u00e4ide selle kohta, kuidas seda teha.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151635-61e4cd7239f1b.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-151635-61e4cd7239f1b.png\" alt=\"WordPressi teema\u00f5petus algajatele \u2013 10. osa: rohkemate mallide lisamine\" ><\/a><\/p>\n<p>Noh, see oli lihtne! J\u00e4rgmisena k\u00e4sitleme otsingutulemuste malli.<\/p>\n<h2>Otsingutulemuste malli lisamine<\/h2>\n<p>Protseduur on t\u00e4pselt sama, mis kategooriamallide puhul. Seekord tehke koopia <code>category.php<\/code>ja nimetage koopia \u00fcmber nimeks <code>search.php<\/code>.<\/p>\n<p>K\u00f5ik, mida peame parandama, on pealkiri. Arhiivi pealkirja funktsioon, mida kasutasime kategooria mallis, ei t\u00f6\u00f6ta kahjuks v\u00e4ga h\u00e4sti otsingutulemuste malli puhul. Tegelikult pole WordPressis lihtsat funktsiooni, mis meie jaoks pealkirja v\u00e4lja annaks.<\/p>\n<p>Kuid me saame selle ise h\u00f5lpsasti teha ja samal ajal n\u00e4itan, kuidas d\u00fcnaamilist muutujat v\u00e4ljastada ja teksti siiski t\u00f5lkida.<\/p>\n<p>PHP-l on kaks kasulikku funktsiooni <code>printf()<\/code>ja <code>sprintf()<\/code>. Nad teevad sama, v\u00e4lja arvatud see, et <code>printf<\/code>v\u00e4ljastab selle (nagu kaja) ja <code>sprintf<\/code>tagastab selle, nii et saame selle muutujasse salvestada. P\u00e4rast teksti sisestamist esimesteks parameetriteks saame argumentidena lisada d\u00fcnaamilisi muutujaid, mis seej\u00e4rel teksti sisestatakse. Nende sees saame kasutada t\u00f5lgitavaid tekstifunktsioone <code>__()<\/code>ja <code>_e()<\/code>. Soovitan teil lugeda natuke <a href=\"https:\/\/www.php.net\/manual\/en\/function.printf.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">printf<\/a> v\u00f5i <a href=\"https:\/\/www.php.net\/manual\/en\/function.sprintf.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">sprintf<\/a> toimimise kohta, sest ma ei hakka siin rohkem detailidesse laskuma.<\/p>\n<p>WordPress pakub otsitud stringi hankimiseks lihtsat funktsiooni; <code>get_search_query()<\/code>. Seda \u00f6eldes asendame arhiivi pealkirja funktsiooni sellega;<\/p>\n<pre><code>&lt;h1&gt;&lt;?php printf(__('Search: %s', 'wptutorial'), get_search_query()); ?&gt;&lt;\/h1&gt;<\/code><\/pre>\n<p>See, mida \u00fclaltoodud kood teeb, on seest v\u00e4ljapoole; t\u00f5lgitava teksti &quot;Otsi: %s&quot; m\u00e4\u00e4ratlemine, mis asetatakse <code>printf<\/code>stringi kordava teksti sisse ja asendab stringikonstandi (<code>%s<\/code>) teise argumendiga; mis on <code>get_search_query()<\/code>.<\/p>\n<p>Selle tulemusena saame &quot;er&quot; otsides sellise pealkirja:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151635-61e4cd7331b74.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-151635-61e4cd7331b74.png\" alt=\"WordPressi teema\u00f5petus algajatele \u2013 10. osa: rohkemate mallide lisamine\" ><\/a><\/p>\n<p>Tore! Veel \u00fcks mall tehtud. Mis puudutab selle \u00f5ppet\u00fcki viimast osa, siis l\u00e4heme oma \u00fche postituse malli juurde ja lisame midagi WordPressis v\u00e4ga levinud; kommentaaride mall.<\/p>\n<h2>Kommentaaride malli lisamine \u00fchele postitusele<\/h2>\n<p>Meie <code>single.php<\/code>, p\u00e4rast postituse artiklit, tahame n\u00e4idata kommentaare. Kommentaarid peaksid v\u00e4ljastama eelmiste kommentaaride loendi ja uue kommentaari lisamise vormi.<\/p>\n<p>Kommentaaride mall on mallifail, mille saate oma teemale lisada, kuid WordPressil on tegelikult oma vaikekommentaaride malli v\u00e4ljund. Kui teil seda <code>comments.php<\/code>teemat pole, tagastab kommentaaride malli taotlemine selle jaoks WordPressi vaikev\u00e4ljundi. Seda me selles \u00f5petuses teemegi.<\/p>\n<p>Soovime kutsuda kommentaaride malli ainult siis, kui postitusel on aktiveeritud kommentaarid (see on iga postituse seade ja globaalne saidi seade). Seega lisame kontrolli, kas kommentaarid on lubatud, <code>comments_open()<\/code>ja kui see tagastab t\u00f5ene, taotleme kommentaaride malli <code>comments_template()<\/code>. Pidage meeles, et see k\u00f5ik peab toimuma ts\u00fckli jooksul. Lisasin selle p\u00e4rast ts\u00fckli l\u00f5ppu <code>&lt;\/article&gt;<\/code>, vahetult enne ts\u00fckli sulgumist.<\/p>\n<pre><code>...\n        &lt;p&gt;&lt;?php _e('Author', 'wptutorial'); ?&gt;: &lt;?php the_author(); ?&gt;&lt;\/p&gt;\n    &lt;\/article&gt;\n    &lt;?php \n    if (comments_open()) {\n        comments_template();\n    }\n    endwhile;\n} else {\n    ?&gt;&lt;p&gt;&lt;?php _e('No posts, sorry.', 'wptutorial'); ?&gt;&lt;\/p&gt;&lt;?php\n...<\/code><\/pre>\n<p>Kui k\u00fclastate \u00fchte postitust, mis on lubanud kommentaare (lisasin kommentaari lihtsalt selleks, et n\u00e4idata teile ka kommentaaride loendit); saate selle ilusa (ahm) kommentaaride vaikemalli:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151635-61e4cd7412986.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-151635-61e4cd7412986.png\" alt=\"WordPressi teema\u00f5petus algajatele \u2013 10. osa: rohkemate mallide lisamine\" ><\/a><\/p>\n<p>N\u00fc\u00fcd saate (ja seda sageli soovitatakse) luua oma <code>comments.php<\/code>teemas oma, mis alistab WordPressi vaikev\u00e4ljundi. Kuid ma ei loo selles \u00f5petuses kommentaaride malli, kuna WordPressi vaikev\u00e4ljund t\u00f6\u00f6tab h\u00e4sti seni, kuni kujundate selle \u00f5igesti. Kui uurite HTML-i, on saadaval palju \u00fcmbriseid ja klasse.<\/p>\n<h2>Kasutatud meetodite dokumentatsioon<\/h2>\n<ul>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/get_template_part\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">hanki_malli_osa<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/the_archive_title\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">arhiivi_pealkiri<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/get_search_query\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">get_search_query<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/comments_open\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kommentaarid_avatud<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/comments_template\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kommentaarid_mall<\/a><\/li>\n<\/ul>\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 \u00f5ppet\u00fckis \u00f5pime tundma mallide osi ja loome oma WordPressi teema jaoks rohkem malle. Samuti lisame \u00fche postituse vaatesse kommentaaride malli.<\/p>\n","protected":false},"author":1,"featured_media":223663,"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-233914","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\/233914","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=233914"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/233914\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/223663"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=233914"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=233914"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=233914"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}