{"id":233539,"date":"2023-02-16T09:39:00","date_gmt":"2023-02-16T06:39:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233539"},"modified":"2022-11-11T00:14:22","modified_gmt":"2022-11-10T21:14:22","slug":"lisaeae-mukautettu-pysyvae-linkkiasetus-mukautetulle-viestityypille-wordpressissae","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/lisaeae-mukautettu-pysyvae-linkkiasetus-mukautetulle-viestityypille-wordpressissae\/","title":{"rendered":"Lis\u00e4\u00e4 mukautettu pysyv\u00e4 linkkiasetus mukautetulle viestityypille WordPressiss\u00e4"},"content":{"rendered":"\n<p>T\u00e4m\u00e4 on opetusohjelma mukautetun asetuksen lis\u00e4\u00e4misest\u00e4 WordPressin j\u00e4rjestelm\u00e4nvalvojan sivulle &quot;Asetukset &gt; Pysyv\u00e4t linkit&quot;, jotta voit m\u00e4\u00e4ritt\u00e4\u00e4 mukautetun viestityypin etanan. Jos olet kehitt\u00e4m\u00e4ss\u00e4 teemaa tai laajennusta muille, joissa on sis\u00e4\u00e4nrakennettu mukautettu viestityyppi, sen k\u00e4ytt\u00e4j\u00e4 arvostaa t\u00e4m\u00e4n asetuksen lis\u00e4\u00e4mist\u00e4, koska h\u00e4n voi p\u00e4\u00e4tt\u00e4\u00e4 mukautetun viestityypin URL-rakenteen.<\/p>\n<p>En k\u00e4y l\u00e4pi yksityiskohtaisesti mukautetun viestityypin lis\u00e4\u00e4mist\u00e4. Jos olet ep\u00e4varma, suosittelen tutustumaan <a href=\"https:\/\/awhitepixel.com\/blog\/how-to-create-custom-post-types-and-custom-taxonomies\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">mukautetun viestityypin lis\u00e4\u00e4miseen<\/a>.<\/p>\n<p>Oletetaan, ett\u00e4 sinulla on seuraavanlainen koodi mukautetun viestityypin rekister\u00f6imiseksi:<\/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>Meit\u00e4 kiinnostaa <code>rewrite<\/code>argumentti. T\u00e4ss\u00e4 m\u00e4\u00e4rit\u00e4mme, mink\u00e4 etanan viestityyppi saa kaikkien viestiens\u00e4 eteen. Muokatun viestityypin rekister\u00f6intikoodisi voi olla hieman erilainen, esim. ilman &quot; <code>with_front<\/code>&quot;, mutta se, mist\u00e4 olemme kiinnostuneita, on &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>T\u00e4ll\u00e4 koodilla k\u00e4yt\u00e4nn\u00f6ss\u00e4 koodaat, mik\u00e4 viestien pysyv\u00e4 linkki on. Viestityyppi\u00e4 viittauksille voidaan k\u00e4ytt\u00e4\u00e4 monentyyppisille sis\u00e4ll\u00f6n ja teeman k\u00e4ytt\u00e4jille; esim. projekti, portfolio, asiakasviitteet, yritysreferenssit jne. Jotta teemasi olisi joustava, saatat haluta antaa teeman k\u00e4ytt\u00e4j\u00e4n p\u00e4\u00e4tt\u00e4\u00e4 itse postauksen tyypin etana.<\/p>\n<p>Joten katsotaan kuinka se tehd\u00e4\u00e4n!<\/p>\n<h2>Kent\u00e4n lis\u00e4\u00e4minen ja tallentaminen<\/h2>\n<p>WordPressin asetussovellusliittym\u00e4n k\u00e4ytt\u00f6 yksinkertaistaa t\u00e4t\u00e4 meille jonkin verran. Meid\u00e4n tarvitsee vain lis\u00e4t\u00e4 asetuskentt\u00e4 ja kertoa WordPressille, mill\u00e4 j\u00e4rjestelm\u00e4nvalvojan sivulla haluamme sen n\u00e4kyv\u00e4n \u2013 meid\u00e4n tapauksessamme pysyvien linkkien asetussivulla. Muista, ett\u00e4 meid\u00e4n on kirjoitettava funktio, joka todella tallentaa my\u00f6s arvon, mink\u00e4 teemme lopussa.<\/p>\n<p>Kytkemme toimintomme <code>admin_init<\/code>koukkuun ja rekister\u00f6imme asetuksemme. Kun rekister\u00f6imme asetuksen, m\u00e4\u00e4rit\u00e4mme, mik\u00e4 toiminto sen tulee suorittaa asetuksen tulostamiseksi:<\/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>Argumentin nelj\u00e4 asettaminen <code>[add_settings_field](https:\/\/developer.wordpress.org\/reference\/functions\/add_settings_field\/)()<\/code>arvoon <code>'permalink'<\/code>kehottaa WordPressi\u00e4 lis\u00e4\u00e4m\u00e4\u00e4n asetuksen Pysyvien linkkien asetukset -sivulle. Argumentti numero kolme on funktio, joka WordPressin tulee suorittaa asetusta tulostaessaan \u2013 funktio, jonka m\u00e4\u00e4rittelemme seuraavaksi (kiinnittyneen funktion ulkopuolella):<\/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>T\u00e4ss\u00e4 funktiossa tulostetaan yksinkertaisesti perusmuototeksti <code>&lt;input&gt;<\/code>. Sen <code>value<\/code>attribuutille noudetaan asetuksen arvo k\u00e4ytt\u00e4m\u00e4ll\u00e4 <code>[get_option](https:\/\/developer.wordpress.org\/reference\/functions\/get_option\/)()<\/code>. Attribuutti <code>placeholder<\/code>on valinnainen, mutta on hyv\u00e4 k\u00e4yt\u00e4nt\u00f6 lis\u00e4t\u00e4 oletusarvosi, jotta teeman k\u00e4ytt\u00e4j\u00e4 tiet\u00e4\u00e4, haluaako h\u00e4n muuttaa sen arvoa vai ei.<\/p>\n<p>Jos tallennat koodisi ja siirryt WordPressin pysyv\u00e4t linkit -sivullesi nyt, sinun pit\u00e4isi n\u00e4hd\u00e4 kentt\u00e4si aivan lopussa:<\/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=\"Lis\u00e4\u00e4 mukautettu pysyv\u00e4 linkkiasetus mukautetulle viestityypille WordPressiss\u00e4\" ><\/a><\/p>\n<p>T\u00e4ll\u00e4 hetkell\u00e4 asetus ei tallenna arvoaan, se on seuraava vaihe.<\/p>\n<p>Meid\u00e4n on lis\u00e4tt\u00e4v\u00e4 toinen toiminto, <code>admin_init<\/code>joka tarkistaa, onko asetuksemme l\u00e4hetetty pysyv\u00e4n linkin rakennemuodossa. Ja jos on, se tulisi tallentaa -sovelluksella <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>Pysyvien linkkien asetuksia tallennettaessa l\u00e4hetet\u00e4\u00e4n lomake, joten voimme saada arvot PHP:n <code>$_POST<\/code>globaalin muuttujan kautta. Lomakkeesta l\u00e4hetetyt arvot tallennetaan taulukkona sy\u00f6tteen nimim\u00e4\u00e4ritteill\u00e4 avaimina. T\u00e4ss\u00e4 tapauksessa asetamme <code>mytheme_reference_slug<\/code>sy\u00f6tteellemme name-attribuutin, jotta voimme k\u00e4ytt\u00e4\u00e4 l\u00e4hetetty\u00e4 arvoa <code>$_POST['mytheme_reference_slug']<\/code>.<\/p>\n<p>Nyt asetuksen pit\u00e4isi toimia t\u00e4ysin Permalink Settings -sivulla. Viimeinen osa on t\u00e4m\u00e4n asetuksen arvon liitt\u00e4minen mukautettuun viestityyppiimme.<\/p>\n<h2>Mukautetun viestityypin tekeminen k\u00e4yt\u00e4 asetustamme<\/h2>\n<p>Jotta mukautettu viestityyppimme k\u00e4ytt\u00e4isi asetuksemme mukautettua arvoa, palaamme <code>register_post_type()<\/code>funktiokutsuun ja muokkaamme <code>rewrite<\/code>argumentin t\u00e4lt\u00e4:<\/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>T\u00e4\u00e4ll\u00e4 vain haemme uuden vaihtoehtomme arvoa. Jos se on tyhj\u00e4, k\u00e4ytet\u00e4\u00e4n oletusarvoa (<code>'reference'<\/code>).<\/p>\n<p>Ja siin\u00e4 se! Nyt mukautettu viestityyppisi k\u00e4ytt\u00e4\u00e4 Pysyvien linkkien asetukset -sivulla m\u00e4\u00e4ritetty\u00e4 etanapohjaa. Voit lis\u00e4t\u00e4 asetuksia samalla tavalla, esimerkiksi mukautettuja taksonomioita varten.<\/p>\n<h2>Koko koodi<\/h2>\n<p>Kaikki yhdess\u00e4 nyt.<\/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>T\u00e4m\u00e4 on opetusohjelma mukautetun asetuksen lis\u00e4\u00e4misest\u00e4 WordPressin j\u00e4rjestelm\u00e4nvalvojasivulle &#8221;Asetukset > Pysyv\u00e4t linkit&#8221;, jolla voit m\u00e4\u00e4ritt\u00e4\u00e4 mukautetun viestityypin etanan.<\/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":[895,719,719,895,1110,834,843,803,803,834,843,864,864],"tags":[1166],"class_list":{"0":"post-233539","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-koodi","8":"category-kehittaejae","11":"category-n-a","12":"category-opas-aloittelijoille","13":"category-opetusohjelmia","14":"category-php-5","18":"category-wordpress-5","20":"tag-affiai-fi"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/233539","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=233539"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/233539\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/152962"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=233539"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=233539"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=233539"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}