{"id":233550,"date":"2023-02-16T09:35:00","date_gmt":"2023-02-16T06:35:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233550"},"modified":"2022-11-11T00:18:24","modified_gmt":"2022-11-10T21:18:24","slug":"lisage-wordpressis-oma-kohandatud-postituse-tueuebi-jaoks-kohandatud-puesilingi-saete","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/lisage-wordpressis-oma-kohandatud-postituse-tueuebi-jaoks-kohandatud-puesilingi-saete\/","title":{"rendered":"Lisage WordPressis oma kohandatud postituse t\u00fc\u00fcbi jaoks kohandatud p\u00fcsilingi s\u00e4te"},"content":{"rendered":"\n<p>See on \u00f5petus selle kohta, kuidas lisada kohandatud s\u00e4tet WordPressi administraatorilehele \u201eSeaded &gt; P\u00fcsilingid&quot;, et m\u00e4\u00e4rata oma kohandatud postituse t\u00fc\u00fcbi n\u00e4lk. Kui arendate teemat v\u00f5i pistikprogrammi teistele, millel on sisseehitatud kohandatud postituse t\u00fc\u00fcp, hindab selle kasutaja selle s\u00e4tte lisamist, kuna v\u00f5imaldab neil otsustada kohandatud postituse t\u00fc\u00fcbi URL-i struktuuri \u00fcle.<\/p>\n<p>Ma ei k\u00e4sitle \u00fcksikasjalikult kohandatud postituse t\u00fc\u00fcbi lisamist; Kui te pole kindel, soovitan vaadata, <a href=\"https:\/\/awhitepixel.com\/blog\/how-to-create-custom-post-types-and-custom-taxonomies\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kuidas lisada kohandatud postituse t\u00fc\u00fcp<\/a>.<\/p>\n<p>Oletame, et teil on kohandatud postituse t\u00fc\u00fcbi registreerimiseks selline kood:<\/p>\n<pre><code>add_action('init', function() {\n    register_post_type('reference', [\n        'label' =&gt; __('References', 'txtdomain'),\n        'public' =&gt; true,\n        'menu_position' =&gt; 5,\n        'menu_icon' =&gt; 'dashicons-book',\n        'supports' =&gt; ['title', 'editor', 'thumbnail', 'author', 'custom-fields', 'revisions'],\n        'show_in_rest' =&gt; true,\n        'rewrite' =&gt; [\n            'slug' =&gt; 'reference',\n            'with_front' =&gt; false\n        ],\n        'labels' =&gt; [\n            'singular_name' =&gt; __('Reference', 'txtdomain'),\n            'add_new_item' =&gt; __('Add new reference', 'txtdomain'),\n            'new_item' =&gt; __('New reference', 'txtdomain'),\n            'view_item' =&gt; __('View reference', 'txtdomain'),\n            'not_found' =&gt; __('No references found', 'txtdomain'),\n            'not_found_in_trash' =&gt; __('No references found in trash', 'txtdomain'),\n            'all_items' =&gt; __('All references', 'txtdomain'),\n            'insert_into_item' =&gt; __('Insert into reference', 'txtdomain')\n        ],      \n    ]);\n});<\/code><\/pre>\n<p>Meid huvitab <code>rewrite<\/code>argument. Siin m\u00e4\u00e4ratleme, millise n\u00e4lkja saab postituse t\u00fc\u00fcp k\u00f5igi oma postituste ette. Teie kohandatud postituse t\u00fc\u00fcbi registreerimise kood v\u00f5ib veidi erineda, nt ilma &quot; <code>with_front<\/code>&quot;, kuid meid huvitab siin &quot; <code>slug<\/code>&quot;:<\/p>\n<pre><code>'rewrite' =&gt; [\n    'slug' =&gt; 'reference',\n    'with_front' =&gt; false\n]<\/code><\/pre>\n<p>Selle koodi abil saate praktiliselt k\u00f5vasti kodeerida, milline on postituste p\u00fcsilingi n\u00e4lkjas. Viidete postituse t\u00fc\u00fcpi v\u00f5ib kasutada mitut t\u00fc\u00fcpi sisu ja teema kasutajate jaoks; nt projekt, portfell, kliendiviited, ettev\u00f5tte viited jne. Teema paindlikuks muutmiseks v\u00f5iksite lubada teema kasutajal ise postituse t\u00fc\u00fcbi \u00fcle otsustada.<\/p>\n<p>Nii et vaatame, kuidas seda teha!<\/p>\n<h2>V\u00e4lja lisamine ja salvestamine<\/h2>\n<p>WordPressi s\u00e4tete API kasutamine lihtsustab seda meie jaoks m\u00f5nev\u00f5rra. Peame vaid lisama seadete v\u00e4lja ja \u00fctlema WordPressile, millisel administraatori lehel me seda kuvada tahame \u2013 meie puhul p\u00fcsilinkide seadete lehel. Pidage meeles, et peame kirjutama funktsiooni, mis tegelikult salvestab ka v\u00e4\u00e4rtuse, mida me ka l\u00f5pus teeme.<\/p>\n<p>Me \u00fchendame oma funktsiooni <code>admin_init<\/code>konksu k\u00fclge ja registreerime oma seadistuse. Seadistuse registreerimisel m\u00e4\u00e4ratleme, millist funktsiooni see s\u00e4tte v\u00e4ljastamiseks k\u00e4ivitama peaks:<\/p>\n<pre><code>add_action('admin_init', function() {\n    add_settings_field('mytheme_reference_slug', __('References base', 'txtdomain'), 'mytest_reference_slug_output', 'permalink', 'optional');\n});<\/code><\/pre>\n<p>Argumendi nelja m\u00e4\u00e4ramine <code>[add_settings_field](https:\/\/developer.wordpress.org\/reference\/functions\/add_settings_field\/)()<\/code>v\u00e4\u00e4rtusele <code>'permalink'<\/code>annab WordPressile k\u00e4su lisada s\u00e4te p\u00fcsilinkide seadete lehele. Argument number kolm on funktsioon, mida WordPress peaks seadistuse v\u00e4ljastamisel k\u00e4ivitama \u2013 funktsioon, mille m\u00e4\u00e4ratleme j\u00e4rgmisena (v\u00e4ljaspool konksu funktsiooni):<\/p>\n<pre><code>function mytest_reference_slug_output() {\n    ?&gt;\n    &lt;input name=\"mytheme_reference_slug\" type=\"text\" class=\"regular-text code\" value=\"&lt;?php echo esc_attr(get_option('mytheme_reference_slug')); ?&gt;\" placeholder=\"&lt;?php echo 'reference'; ?&gt;\" \/&gt;\n    &lt;?php\n}<\/code><\/pre>\n<p>Selles funktsioonis v\u00e4ljastame lihtsalt vormi p\u00f5hiteksti <code>&lt;input&gt;<\/code>. Selle <code>value<\/code>atribuudi jaoks hangime s\u00e4tte v\u00e4\u00e4rtuse, kasutades <code>[get_option](https:\/\/developer.wordpress.org\/reference\/functions\/get_option\/)()<\/code>. Atribuut <code>placeholder<\/code>on valikuline, kuid hea tava on lisada vaikimisi slug-baas, et teema kasutaja teaks, kas ta soovib selle v\u00e4\u00e4rtust muuta v\u00f5i mitte.<\/p>\n<p>Kui salvestate koodi ja l\u00e4hete kohe oma WordPressi p\u00fcsilinkide lehele, peaksite oma v\u00e4lja n\u00e4gema p\u00e4ris l\u00f5pus:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152961-61e500224b55a.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-152961-61e500224b55a.png\" alt=\"Lisage WordPressis oma kohandatud postituse t\u00fc\u00fcbi jaoks kohandatud p\u00fcsilingi s\u00e4te\" ><\/a><\/p>\n<p>Hetkel s\u00e4te oma v\u00e4\u00e4rtust ei salvesta, see on j\u00e4rgmine samm.<\/p>\n<p>Peame lisama veel \u00fche funktsiooni, <code>admin_init<\/code>mis kontrollib, kas meie s\u00e4te esitati p\u00fcsilingi struktuuri kujul v\u00f5i mitte. Ja kui nii, siis tuleks see salvestada <code>[update_option](https:\/\/developer.wordpress.org\/reference\/functions\/update_option\/)()<\/code>.<\/p>\n<pre><code>add_action('admin_init', function() {\n    if (isset($_POST['permalink_structure'])) {\n        update_option('mytheme_reference_slug', trim($_POST['mytheme_reference_slug']));\n    }\n});<\/code><\/pre>\n<p>P\u00fcsilinkide seadete salvestamisel esitatakse vorm, nii et saame v\u00e4\u00e4rtused PHP <code>$_POST<\/code>globaalse muutuja kaudu. Vormil esitatud v\u00e4\u00e4rtused salvestatakse massiivina, mille v\u00f5tmeteks on sisendi nime atribuudid. Meie puhul m\u00e4\u00e4rame <code>mytheme_reference_slug<\/code>oma sisendile nimeatribuudi &quot; &quot;, et saaksime esitatud v\u00e4\u00e4rtusele juurde p\u00e4\u00e4seda <code>$_POST['mytheme_reference_slug']<\/code>.<\/p>\n<p>N\u00fc\u00fcd peaks seade p\u00fcsilingi s\u00e4tete lehel t\u00e4ielikult t\u00f6\u00f6tama. Viimane osa on selle s\u00e4tte v\u00e4\u00e4rtuse lisamine meie kohandatud postituse t\u00fc\u00fcbile.<\/p>\n<h2>Meie kohandatud postituse t\u00fc\u00fcbi loomiseks kasutage meie seadet<\/h2>\n<p>Selleks, et meie kohandatud postitust\u00fc\u00fcp kasutaks meie s\u00e4tte kohandatud v\u00e4\u00e4rtust, naaseme <code>register_post_type()<\/code>funktsioonikutseni ja muudame <code>rewrite<\/code>argumendi j\u00e4rgmiselt:<\/p>\n<pre><code>'rewrite' =&gt; [\n    'slug' =&gt; (!empty(get_option('mytheme_reference_slug')))? get_option('mytheme_reference_slug'): 'reference',\n    'with_front' =&gt; false\n]<\/code><\/pre>\n<p>K\u00f5ik, mida me siin teeme, on meie uue valiku v\u00e4\u00e4rtuse hankimine. Kui see on t\u00fchi, kasutatakse vaikimisi (<code>'reference'<\/code>).<\/p>\n<p>Ja see ongi k\u00f5ik! N\u00fc\u00fcd kasutab teie kohandatud postituse t\u00fc\u00fcp mis tahes n\u00e4lkmise alust, mis on m\u00e4\u00e4ratud lehel P\u00fcsilinkide seaded. Samamoodi saate lisada rohkem s\u00e4tteid, n\u00e4iteks kohandatud taksonoomiate jaoks.<\/p>\n<h2>T\u00e4ielik kood<\/h2>\n<p>K\u00f5ik koos n\u00fc\u00fcd.<\/p>\n<pre><code>\/\/ Register custom post type\nadd_action('init', function() {\n    register_post_type('reference', [\n        'label' =&gt; __('References', 'txtdomain'),\n        'public' =&gt; true,\n        'menu_position' =&gt; 5,\n        'menu_icon' =&gt; 'dashicons-book',\n        'supports' =&gt; ['title', 'editor', 'thumbnail', 'author', 'custom-fields', 'revisions'],\n        'show_in_rest' =&gt; true,\n        'rewrite' =&gt; [\n            'slug' =&gt; (!empty(get_option('mytheme_reference_slug')))? get_option('mytheme_reference_slug'): 'reference',\n            'with_front' =&gt; false\n        ],\n        'labels' =&gt; [\n            'singular_name' =&gt; __('Reference', 'txtdomain'),\n            'add_new_item' =&gt; __('Add new reference', 'txtdomain'),\n            'new_item' =&gt; __('New reference', 'txtdomain'),\n            'view_item' =&gt; __('View reference', 'txtdomain'),\n            'not_found' =&gt; __('No references found', 'txtdomain'),\n            'not_found_in_trash' =&gt; __('No references found in trash', 'txtdomain'),\n            'all_items' =&gt; __('All references', 'txtdomain'),\n            'insert_into_item' =&gt; __('Insert into reference', 'txtdomain')\n        ],      \n    ]);\n});\n\u00a0\n\/\/ Add setting\nadd_action('admin_init', function() {\n    add_settings_field('mytheme_reference_slug', __('References base', 'txtdomain'), 'mytest_reference_slug_output', 'permalink', 'optional');\n});\n\u00a0\n\/\/ Setting output\nfunction mytest_reference_slug_output() {\n    ?&gt;\n    &lt;input name=\"mytheme_reference_slug\" type=\"text\" class=\"regular-text code\" value=\"&lt;?php echo esc_attr(get_option('mytheme_reference_slug')); ?&gt;\" placeholder=\"&lt;?php echo 'reference'; ?&gt;\" \/&gt;\n    &lt;?php\n}\n\u00a0\n\/\/ Save setting\nadd_action('admin_init', function() {\n    if (isset($_POST['permalink_structure'])) {\n        update_option('mytheme_reference_slug', trim($_POST['mytheme_reference_slug']));\n    }\n});<\/code><\/pre>\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>See on \u00f5petus selle kohta, kuidas lisada kohandatud s\u00e4te WordPressi administraatori lehele &#8220;Seaded > P\u00fcsilingid&#8221;, et m\u00e4\u00e4ratleda oma kohandatud postituse t\u00fc\u00fcbi n\u00e4lkjas.<\/p>\n","protected":false},"author":1,"featured_media":152962,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,894,718,833,894,1110,842,802,802,833,842,863,863],"tags":[1165],"class_list":{"0":"post-233550","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-arendaja","8":"category-kood","10":"category-juhend-algajatele","12":"category-n-a","13":"category-opetused","14":"category-php-4","18":"category-wordpress-4","20":"tag-affiai-et"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/233550","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=233550"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/233550\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/152962"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=233550"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=233550"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=233550"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}