{"id":233581,"date":"2023-02-17T13:04:00","date_gmt":"2023-02-17T10:04:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233581"},"modified":"2022-11-11T00:27:59","modified_gmt":"2022-11-10T21:27:59","slug":"looge-wordpressis-koodi-jaergi-kohandatud-postitustueuepe-ja-kohandatud-taksonoomiaid","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/looge-wordpressis-koodi-jaergi-kohandatud-postitustueuepe-ja-kohandatud-taksonoomiaid\/","title":{"rendered":"Looge WordPressis koodi j\u00e4rgi kohandatud postitust\u00fc\u00fcpe ja kohandatud taksonoomiaid"},"content":{"rendered":"\n<p>See on \u00f5petus, kuidas luua WordPressis koodi j\u00e4rgi kohandatud postituse t\u00fc\u00fcp ja kohandatud taksonoomia. Vaatleme levinumaid l\u00f5kse ja milliseid argumente kasutada minimaalse, kuid piisava loomiseks. L\u00f5pus on t\u00e4ielik n\u00e4ide.<\/p>\n<h2>Kuhu kood lisada<\/h2>\n<p>Kohandatud postitust\u00fc\u00fcpe (CPT) ja kohandatud taksonoomiaid saab WordPressis luua teema <code>functions.php<\/code>failis v\u00f5i pistikprogrammis. Pidage meeles, et kohandatud postituse t\u00fc\u00fcp ja kohandatud taksonoomia kaovad, kui vahetate teemat v\u00f5i desaktiveerite pistikprogrammi. Seega on CPT registreeringu ajutiselt teemast eemaldamine ja pistikprogrammi teisaldamine ohutu \u2013 seni, kuni s\u00e4ilitate sama kohandatud postituse t\u00fc\u00fcbi v\u00f5i taksonoomia identifikaatori slug\/ID.<\/p>\n<p>CPT v\u00f5i taksonoomia loomiseks (ja muutmiseks) <strong>kasutage alati<\/strong> konksu <code>init<\/code>. Selle asetamine (v\u00e4ljapoole konksu) v\u00f5i m\u00f5ne muu konksu juure <code>functions.php<\/code>p\u00f5hjustab probleeme.<\/p>\n<h2>Kohandatud postituse t\u00fc\u00fcbi loomine<\/h2>\n<p>Kohandatud postitust\u00fc\u00fcbi loomiseks kasutate <code>register_post_type<\/code>funktsiooni. See aktsepteerib kahte parameetrit; esiteks postituse t\u00fc\u00fcbi identifikaator ja teiseks massiiv k\u00f5igi argumentidega.<\/p>\n<p>Postituse t\u00fc\u00fcbi identifikaator on teie postituse t\u00fc\u00fcbi slug-versiooni nimi. N\u00e4iteks WordPressi sisseehitatud postitust\u00fc\u00fcpide postitused ja lehed on t\u00e4histatud kui &quot; <code>post<\/code>&quot; ja &quot; <code>page<\/code>&quot;. Identifikaator peab olema kordumatu, j\u00e4rgima reegleid (v\u00e4ikesed t\u00e4hed, t\u00fchikud jne) ega tohi olla WordPressi reserveeritud n\u00e4pun\u00e4ide.<\/p>\n<p>See on see, mida ma olen \u00f5ppinud olema minimaalsed, kuid t\u00e4iesti head argumendid postituse t\u00fc\u00fcbi registreerimiseks; Arvestades, et see on tavaline avalik CPT ja soovite alistada k\u00f5ik sildid, mis \u00fctlevad &quot;postitus&quot; v\u00f5i &quot;leht&quot;, oma CPT tegeliku nimega:<\/p>\n<pre><code>add_action('init', function() {\n    register_post_type('book', [\n        'label' =&gt; __('Books', 'txtdomain'),\n        'public' =&gt; true,\n        'menu_position' =&gt; 5,\n        'menu_icon' =&gt; 'dashicons-book',\n        'supports' =&gt; ['title', 'editor', 'thumbnail', 'author', 'revisions', 'comments'],\n        'show_in_rest' =&gt; true,\n        'rewrite' =&gt; ['slug' =&gt; 'book'],\n        'labels' =&gt; [\n            'singular_name' =&gt; __('Book', 'txtdomain'),\n            'add_new_item' =&gt; __('Add new book', 'txtdomain'),\n            'new_item' =&gt; __('New book', 'txtdomain'),\n            'view_item' =&gt; __('View book', 'txtdomain'),\n            'not_found' =&gt; __('No books found', 'txtdomain'),\n            'not_found_in_trash' =&gt; __('No books found in trash', 'txtdomain'),\n            'all_items' =&gt; __('All books', 'txtdomain'),\n            'insert_into_item' =&gt; __('Insert into book', 'txtdomain')\n        ],      \n    ]);\n});<\/code><\/pre>\n<h3>\u00dclevaade argumentidest<\/h3>\n<p>Pidage meeles, et m\u00f5ned argumendid p\u00e4rivad v\u00e4\u00e4rtusi teistelt argumentidelt. Kui need pole selges\u00f5naliselt m\u00e4\u00e4ratud, v\u00f5ivad need vaikimisi olla samad v\u00f5i vastupidised. Mitmed argumendid p\u00e4rivad argumendi sama v\u00f5i vastupidise v\u00e4\u00e4rtuse <code>public<\/code>. Lugege <a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/register_post_type\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dokumentatsiooni<\/a>, et n\u00e4ha, mis on iga argumendi vaikev\u00e4\u00e4rtus ja kas peate selle alistama.<\/p>\n<p>Kui teile sobib, kui administraatoris on tekstid, mis viitavad teie postituse t\u00fc\u00fcbile &quot;postitus&quot; v\u00f5i &quot;leht&quot;, v\u00f5ite sildiargumentide m\u00e4\u00e4ratlemise vahele j\u00e4tta. T\u00f5en\u00e4oliselt sobib teile ainult <code>label<\/code>(mitmuse nimi) ja <code>labels<\/code>massiivi sees lihtsalt <code>singular_name<\/code>(ainsuse nimi).<\/p>\n<p>Kui te ei m\u00e4\u00e4ra olekuks <code>show_in_rest<\/code>T\u00f5ene, kasutab teie kohandatud pos.-t\u00fc\u00fcp vana klassikalist redaktorit. <strong>Kui soovite oma kohandatud postituse t\u00fc\u00fcbi jaoks kasutada Gutenbergi redaktorit, peate m\u00e4\u00e4rama <code>show_in_rest<\/code>v\u00e4\u00e4rtuseks T\u00f5ene<\/strong>.<\/p>\n<p>Argument <code>supports<\/code>\u00fctleb, millised elemendid on teie postituse t\u00fc\u00fcpi postituse muutmisel saadaval. T\u00f5en\u00e4oliselt soovite v\u00e4hemalt pealkirja, redaktorit ja esiletoodud postituse pilti.<\/p>\n<p>Minimaalse <code>rewrite<\/code>massiivielemendiga argument <code>slug<\/code>k\u00e4sib WordPressil k\u00f5ik teie postituse t\u00fc\u00fcbi ainsuse postitused \u00fcmber kirjutada, et kasutada seda eesliidet. \u00dclaltoodud n\u00e4ites saaks ainsuse raamatupostitus URL-i nagu; <a href=\"http:\/\/example.com\/book\/i-robot\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">http:\/\/example.com\/book\/i-robot\/<\/a>. _ Kui olete huvitatud sellest, kuidas lisada administraatorisse p\u00fcsiva lingi reegli s\u00e4te, et teemakasutajad saaksid ise otsustada, vaadake <a href=\"https:\/\/awhitepixel.com\/blog\/how-to-add-a-custom-permalink-setting-for-your-custom-post-type\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">seda postitust<\/a>.<\/p>\n<p>Men\u00fc\u00fcikooni (<code>menu_icon<\/code>) argument v\u00f5ib olla mis tahes j\u00e4rgmistest <a href=\"https:\/\/developer.wordpress.org\/resource\/dashicons\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Dashiconidest<\/a> v\u00f5i vaikev\u00e4\u00e4rtuse s\u00e4ilitamiseks v\u00f5ite selle t\u00fchjaks j\u00e4tta. Vaikimisi on sama ikoon nagu Postitused. Siiski on hea m\u00f5te oma kohandatud postituste t\u00fc\u00fcbid selgelt eraldada.<\/p>\n<p>Men\u00fc\u00fcpositsioon (<code>menu_position<\/code>) v\u00f5imaldab teil m\u00e4\u00e4rata oma kohandatud postituse t\u00fc\u00fcbi asukoha administraatorimen\u00fc\u00fcs. Dokumentatsioonis on loetletud k\u00f5ik administraatori men\u00fc\u00fc positsioonid, nii et saate neid kohandada; positsioon 5 on kohe p\u00e4rast &quot;Postitused&quot;.<\/p>\n<p><code>taxonomies<\/code>Postit\u00fc\u00fcbile taksonoomia lisamiseks on veel \u00fcks argument (). Selles postituses k\u00e4sitleme kohandatud taksonoomia lisamist. Oma postituse t\u00fc\u00fcbile taksonoomiate lisamiseks lisage see argument \u00fclaltoodud massiivi;<\/p>\n<pre><code>'taxonomies' =&gt; ['book_author'],<\/code><\/pre>\n<h3>M\u00e4rkus p\u00fcsilinkide ja 404 ei leitud vigade kohta<\/h3>\n<p>Kui olete kohandatud postituse t\u00fc\u00fcbi registreerimiseks koodi lisanud, m\u00e4rkate, et \u00fche postituse vaatamisel kuvatakse viga &quot;404 ei leitud&quot;. Seda seet\u00f5ttu, et peate p\u00fcsivaid linke v\u00e4rskendama.<\/p>\n<p>Avage Seaded&gt; P\u00fcsilingid ja kl\u00f5psake lihtsalt nuppu &quot;Salvesta muudatused&quot; (pole vaja midagi muuta).<\/p>\n<p>Pidage meeles, et kui muudate <code>rewrite<\/code>atribuuti, peate p\u00fcsilinke uuesti v\u00e4rskendama.<\/p>\n<h2>Kohandatud taksonoomia loomine<\/h2>\n<p>Kohandatud taksonoomia saab lisada \u00fchele WordPressi postitust\u00fc\u00fcbile (postitused, lehed) v\u00f5i kohandatud postituse t\u00fc\u00fcbile. Postituse t\u00fc\u00fcbile saate lisada ka mitu taksonoomiat. Taksonoomia registreerimisel peate esitama postituse t\u00fc\u00fcbi(d), millele soovite selle lisada.<\/p>\n<p>Taksonoomia v\u00f5ib olla kas hierarhiline (nt postituste kategooriad, kus saate luua puup\u00f5hise struktuuri) v\u00f5i sildip\u00f5hine (nt postitussildid). See on t\u00f5esti ainus asjaolu, mida peate eelnevalt teadma, v\u00e4lja arvatud selle identifikaatori n\u00e4lkjas. Nagu CPT-de puhul, peab taksonoomiast tuvastav n\u00e4lkjas olema kordumatu ja j\u00e4rgima reegleid.<\/p>\n<p>Kohandatud taksonoomia registreerimiseks kasutate <code>register_taxonomy<\/code>funktsiooni. Aktsepteerib <code>register_taxonomy<\/code>taksonoomia kordumatu identifikaatori slug esimese argumendina, postitust\u00fc\u00fcpide massiivi, millele see lisada teiseks, ja l\u00f5puks massiivi k\u00f5igi \u00fclej\u00e4\u00e4nud argumentidega. Argumente on palju, kuid see on minu arvates minimaalne, kuid piisav kohandatud taksonoomia registreerimiseks (see lisab sildi t\u00fc\u00fcpi\/mittehierarhilise taksonoomia):<\/p>\n<pre><code>add_action('init', function() {\n    register_taxonomy('book_author', ['book'], [\n        'label' =&gt; __('Authors', 'txtdomain'),\n        'hierarchical' =&gt; false,\n        'rewrite' =&gt; ['slug' =&gt; 'book-author'],\n        'show_admin_column' =&gt; true,\n        'show_in_rest' =&gt; true,\n        'labels' =&gt; [\n            'singular_name' =&gt; __('Author', 'txtdomain'),\n            'all_items' =&gt; __('All Authors', 'txtdomain'),\n            'edit_item' =&gt; __('Edit Author', 'txtdomain'),\n            'view_item' =&gt; __('View Author', 'txtdomain'),\n            'update_item' =&gt; __('Update Author', 'txtdomain'),\n            'add_new_item' =&gt; __('Add New Author', 'txtdomain'),\n            'new_item_name' =&gt; __('New Author Name', 'txtdomain'),\n            'search_items' =&gt; __('Search Authors', 'txtdomain'),\n            'popular_items' =&gt; __('Popular Authors', 'txtdomain'),\n            'separate_items_with_commas' =&gt; __('Separate authors with comma', 'txtdomain'),\n            'choose_from_most_used' =&gt; __('Choose from most used authors', 'txtdomain'),\n            'not_found' =&gt; __('No Authors found', 'txtdomain'),\n        ]\n    ]);\n});<\/code><\/pre>\n<p>Soovitatav on lisada funktsioonikutse kohe p\u00e4rast <code>register_taxonomy<\/code>, veendumaks, et see on CPT-ga korralikult &quot;kinnitatud&quot;: <code>register_taxonomy_for_object_type<\/code>. M\u00e4\u00e4rake oma taksonoomia esimese argumendina ja CPT teise argumendina:<\/p>\n<pre><code>register_taxonomy_for_object_type('book_author', 'book');<\/code><\/pre>\n<p>Sarnaselt \u00fclaltoodud postituse t\u00fc\u00fcbiga <code>register_taxonomy<\/code>aktsepteerib palju rohkem argumente ja paljud neist p\u00e4rivad v\u00f5i s\u00f5ltuvad teiste argumentide v\u00e4\u00e4rtusest. Lugege <a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/register_taxonomy\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dokumentatsiooni<\/a>, et n\u00e4ha, mis on iga argumendi vaikev\u00e4\u00e4rtus ja kas peate selle alistama.<\/p>\n<h3>\u00dclevaade argumentidest<\/h3>\n<p>Kui teile sobivad tekstid, mis viitavad teie taksonoomiale kui &quot;sildile&quot; (kui hierarhia on vale) v\u00f5i &quot;kategooriana&quot; (kui hierarhia on t\u00f5ene), v\u00f5ite t\u00f5en\u00e4oliselt kogu <code>labels<\/code>massiivi vahele j\u00e4tta, v\u00e4lja arvatud v\u00f5ib-olla <code>singular_name<\/code>.<\/p>\n<p>See <code>show_admin_column<\/code>on mugav, et lisada CPT administraatori ekraanile veerg, mis n\u00e4itab taksonoomia seotud termineid. Nii nagu postitustes, n\u00e4ete ka veergu, mis n\u00e4itab seotud kategooriaid. Selle argumendi vaikeseadeks on <code>false<\/code>(\u00e4ra kuva veergu), nii et mulle meeldib see alistada.<\/p>\n<p>T\u00f5ene seadmine <code>show_in_rest<\/code>on vajalik selleks, et teie taksonoomia oleks n\u00e4htav Gutenbergi redaktoris Postituse redigeerimisel, kuna Gutenberg tugineb REST API-le.<\/p>\n<p>Sarnaselt kohandatud postitust\u00fc\u00fcpidega saate oma kohandatud taksonoomias t\u00f5en\u00e4oliselt veateate \u201e404 ei leitud&quot;. Avage Seaded&gt; P\u00fcsilingid ja kl\u00f5psake lihtsalt nuppu &quot;Salvesta muudatused&quot;.<\/p>\n<h2>T\u00e4ielik n\u00e4idiskood<\/h2>\n<p>Siin on t\u00e4ielik n\u00e4ide raamatute jaoks CPT loomisest ja kahe kohandatud taksonoomia lisamisest; \u017eanr (hierarhiline) ja raamatu autor (silt).<\/p>\n<pre><code>add_action('init', function() {\n    register_post_type('book', [\n        'label' =&gt; __('Books', 'txtdomain'),\n        'public' =&gt; true,\n        'menu_position' =&gt; 5,\n        'menu_icon' =&gt; 'dashicons-book',\n        'supports' =&gt; ['title', 'editor', 'thumbnail', 'author', 'revisions', 'comments'],\n        'show_in_rest' =&gt; true,\n        'rewrite' =&gt; ['slug' =&gt; 'book'],\n        'taxonomies' =&gt; ['book_author', 'book_genre'],\n        'labels' =&gt; [\n            'singular_name' =&gt; __('Book', 'txtdomain'),\n            'add_new_item' =&gt; __('Add new book', 'txtdomain'),\n            'new_item' =&gt; __('New book', 'txtdomain'),\n            'view_item' =&gt; __('View book', 'txtdomain'),\n            'not_found' =&gt; __('No books found', 'txtdomain'),\n            'not_found_in_trash' =&gt; __('No books found in trash', 'txtdomain'),\n            'all_items' =&gt; __('All books', 'txtdomain'),\n            'insert_into_item' =&gt; __('Insert into book', 'txtdomain')\n        ],      \n    ]);\n\u00a0\n    register_taxonomy('book_genre', ['book'], [\n        'label' =&gt; __('Genres', 'txtdomain'),\n        'hierarchical' =&gt; true,\n        'rewrite' =&gt; ['slug' =&gt; 'book-genre'],\n        'show_admin_column' =&gt; true,\n        'show_in_rest' =&gt; true,\n        'labels' =&gt; [\n            'singular_name' =&gt; __('Genre', 'txtdomain'),\n            'all_items' =&gt; __('All Genres', 'txtdomain'),\n            'edit_item' =&gt; __('Edit Genre', 'txtdomain'),\n            'view_item' =&gt; __('View Genre', 'txtdomain'),\n            'update_item' =&gt; __('Update Genre', 'txtdomain'),\n            'add_new_item' =&gt; __('Add New Genre', 'txtdomain'),\n            'new_item_name' =&gt; __('New Genre Name', 'txtdomain'),\n            'search_items' =&gt; __('Search Genres', 'txtdomain'),\n            'parent_item' =&gt; __('Parent Genre', 'txtdomain'),\n            'parent_item_colon' =&gt; __('Parent Genre:', 'txtdomain'),\n            'not_found' =&gt; __('No Genres found', 'txtdomain'),\n        ]\n    ]);\n    register_taxonomy_for_object_type('book_genre', 'book');\n\u00a0\n    register_taxonomy('book_author', ['book'], [\n        'label' =&gt; __('Authors', 'txtdomain'),\n        'hierarchical' =&gt; false,\n        'rewrite' =&gt; ['slug' =&gt; 'book-author'],\n        'show_admin_column' =&gt; true,\n        'labels' =&gt; [\n            'singular_name' =&gt; __('Author', 'txtdomain'),\n            'all_items' =&gt; __('All Authors', 'txtdomain'),\n            'edit_item' =&gt; __('Edit Author', 'txtdomain'),\n            'view_item' =&gt; __('View Author', 'txtdomain'),\n            'update_item' =&gt; __('Update Author', 'txtdomain'),\n            'add_new_item' =&gt; __('Add New Author', 'txtdomain'),\n            'new_item_name' =&gt; __('New Author Name', 'txtdomain'),\n            'search_items' =&gt; __('Search Authors', 'txtdomain'),\n            'popular_items' =&gt; __('Popular Authors', 'txtdomain'),\n            'separate_items_with_commas' =&gt; __('Separate authors with comma', 'txtdomain'),\n            'choose_from_most_used' =&gt; __('Choose from most used Authors', 'txtdomain'),\n            'not_found' =&gt; __('No Authors found', 'txtdomain'),\n        ]\n    ]);\n    register_taxonomy_for_object_type('book_author', 'book');\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>Juhend kohandatud postitust\u00fc\u00fcpide ja kohandatud taksonoomiate loomiseks WordPressis koodi j\u00e4rgi. H\u00f5lmab argumente, mida kasutada minimaalseks, kuid piisavaks loomiseks.<\/p>\n","protected":false},"author":1,"featured_media":152888,"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-233581","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\/233581","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=233581"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/233581\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/152888"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=233581"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=233581"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=233581"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}