{"id":233308,"date":"2023-02-11T20:24:00","date_gmt":"2023-02-11T17:24:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233308"},"modified":"2022-11-10T20:24:37","modified_gmt":"2022-11-10T17:24:37","slug":"kuinka-muokata-tai-lisaetae-mukautettuja-sarakkeita-viestiluetteloon-wordpress-adminissa","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/kuinka-muokata-tai-lisaetae-mukautettuja-sarakkeita-viestiluetteloon-wordpress-adminissa\/","title":{"rendered":"Kuinka muokata tai lis\u00e4t\u00e4 mukautettuja sarakkeita viestiluetteloon WordPress Adminissa"},"content":{"rendered":"\n<p>WordPressin avulla voit muokata ja lis\u00e4t\u00e4 sarakkeita viestiluetteloon, sivuille tai mihin tahansa mukautettuun viestityyppiin hallintapaneelissa. T\u00e4ss\u00e4 postauksessa katsotaan miten!<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153990-61e5180a562a1.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-153990-61e5180a562a1.png\" alt=\"Kuinka muokata tai lis\u00e4t\u00e4 mukautettuja sarakkeita viestiluetteloon WordPress Adminissa\" ><\/a><\/p>\n<p>On otettava huomioon kaksi koukkua: yksi suodatin sarakkeen sijaintia ja otsikkoa varten ja yksi toiminto sarakkeen tulosteelle jokaiselle viestille. Viestityyppi on osa koukkujen nimi\u00e4. Katsotaanpa niit\u00e4 yksitellen suodattimesta alkaen.<\/p>\n<h2>Pylv\u00e4ssuodatin<\/h2>\n<p>Suodatin WordPressin hallintapaneelin viestiluetteloon muokkaamiseen, poistamiseen tai sarakkeiden lis\u00e4\u00e4miseen on <code>manage_{$post_type}_posts_columns<\/code>. Vaihda <code>{$post_type}<\/code>haluttuun postityyppiin. Esimerkiksi; jos haluat muokata viestityypin sarakkeita <code>post<\/code>, suodattimen nimi on <code>manage_post_posts_columns<\/code>. Ja mukautetulle viestityypille <code>product<\/code>suodattimen nimi olisi <code>manage_product_posts_columns<\/code>.<\/p>\n<p>PS: WordPressiss\u00e4 on sarakesuodatin vain viestityypille &#8217; <code>page<\/code>&#8217;: <code>manage_pages_columns<\/code>, mutta sama tulos saavutetaan k\u00e4ytt\u00e4m\u00e4ll\u00e4 suodatinta <code>manage_page_posts_columns<\/code>.<\/p>\n<p>Suodattimen argumenttina toimitettuna saat t\u00e4yden joukon kyseisen viestityypin kaikista sarakkeista. Jokaisella sarakkeella on yksil\u00f6llinen avain, ja niiden arvot ovat sarakkeen otsikossa n\u00e4kyv\u00e4t tunnisteet. Esimerkkej\u00e4 avaimista ovat &quot; <code>cb<\/code>&quot; valintaruutusarakkeelle ja &quot; <code>title<\/code>&quot; viestin otsikkosarakkeelle. Elementtien j\u00e4rjestys taulukossa m\u00e4\u00e4ritt\u00e4\u00e4 sarakkeiden j\u00e4rjestyksen.<\/p>\n<p>Uuden sarakkeen lis\u00e4\u00e4minen edellytt\u00e4\u00e4 yksinkertaisesti uuden avain + arvo -parin lis\u00e4\u00e4mist\u00e4 taulukkoon ja sen palauttamista. Voit muokata taulukkoa haluamallasi tavalla \u2013 esimerkiksi j\u00e4rjest\u00e4m\u00e4ll\u00e4 sen uudelleen.<\/p>\n<h2>Sarakkeen sis\u00e4ll\u00f6n koukku<\/h2>\n<p>Mit\u00e4 koukkua sinun tulee k\u00e4ytt\u00e4\u00e4 sarakkeen sis\u00e4ll\u00f6n ohjaamiseen, riippuu siit\u00e4, onko viestityyppisi asetettu hierarkkiseksi vai ei. Hierarkkinen viestityyppi on m\u00e4\u00e4ritetty kuten <code>'hierarchical' =&gt; true<\/code>kohdassa <code>register_post_type<\/code>. Kaikki ei-hierarkkiset viestityypit, mukaan lukien WordPressin sis\u00e4\u00e4nrakennettu viestityyppi &#8217; <code>post<\/code>&#8217;, k\u00e4ytt\u00e4v\u00e4t koukun nime\u00e4 <code>manage_{$post_type}_custom_column<\/code>. Kaikki hierarkkiset viestityypit, mukaan lukien WordPressin sis\u00e4\u00e4nrakennettu viestityyppi &#8217; <code>page<\/code>&#8217;, k\u00e4ytt\u00e4v\u00e4t koukun nime\u00e4 <code>manage_pages_custom_column<\/code>(huomaa: viestityypin nime\u00e4 ei kirjoiteta koukun nimeen).<\/p>\n<p>T\u00e4m\u00e4n koukun argumenteiksi annettuna saat sarakkeen nimen, joka on yll\u00e4 olevassa sarakesuodattimessa mainittu avain (esim. &#8217; <code>cb<\/code>&#8217; valintaruutusarakkeelle), ja toiseksi viestitunnuksen. T\u00e4m\u00e4 koukku ajetaan jokaisessa viestiss\u00e4, ja perusl\u00e4ht\u00f6kohtana on, ett\u00e4 tarkistat, olemmeko oikealla saraketyypill\u00e4 (avaimella), ja jos olemme, k\u00e4yt\u00e4 viestitunnusta postmeta tai vastaavan hakemiseen ja tulosta mit\u00e4 haluat.<\/p>\n<h2>Esimerkkej\u00e4<\/h2>\n<p>Katsotaanpa joitain k\u00e4yt\u00e4nn\u00f6n esimerkkej\u00e4.<\/p>\n<h3>Lis\u00e4\u00e4 viesteihin mukautettu sarake, joka n\u00e4ytt\u00e4\u00e4 mukautetun viestisis\u00e4ll\u00f6n<\/h3>\n<p>T\u00e4m\u00e4 on yksinkertaisin tapa lis\u00e4t\u00e4 mukautettuja sarakkeita. Oletetaan, ett\u00e4 haluamme lis\u00e4t\u00e4 mukautetun sarakkeen viestityyppiin &quot;post&quot;. Haluamme sen olevan sarakkeiden loppuun, nimelt\u00e4\u00e4n &quot;Verified&quot;, ja sen pit\u00e4isi tulostaa &quot;Kyll\u00e4&quot; tai &quot;Ei&quot; mukautetusta postin meta-arvosta riippuen. Huomautus: T\u00e4m\u00e4 esimerkki ei sis\u00e4ll\u00e4 mukautetun post-meta-arvon tallentamista tai p\u00e4ivitt\u00e4mist\u00e4.<\/p>\n<p>Lis\u00e4\u00e4mme itse <code>functions.php<\/code>sarakkeen tai mihin tahansa teema- tai laajennuskoodiimme yhdist\u00e4m\u00e4ll\u00e4 sen saraketaulukkoon, ja sarakkeen tulosteen koukussa haemme post-meta-arvon ja tulostamme sen.<\/p>\n<pre><code>add_filter('manage_post_posts_columns', function($columns) {\n    return array_merge($columns, ['verified' =&gt; __('Verified', 'textdomain')]);\n});\n\u00a0\nadd_action('manage_post_posts_custom_column', function($column_key, $post_id) {\n    if ($column_key == 'verified') {\n        $verified = get_post_meta($post_id, 'verified', true);\n        if ($verified) {\n            echo '&lt;span style=\"color:green;\"&gt;'; _e('Yes', 'textdomain'); echo '&lt;\/span&gt;';\n        } else {\n            echo '&lt;span style=\"color:red;\"&gt;'; _e('No', 'textdomain'); echo '&lt;\/span&gt;';\n        }\n    }\n}, 10, 2);<\/code><\/pre>\n<p>Tulos voi olla mit\u00e4 tahansa haluat, lis\u00e4sin yksinkertaisesti <code>span<\/code>tulosteen ymp\u00e4rille eri tekstiv\u00e4reill\u00e4 tunnistamisen helpottamiseksi.<\/p>\n<h3>Lis\u00e4\u00e4 mukautettu sarake hierarkkiseen mukautettuun viestityyppiin, joka n\u00e4ytt\u00e4\u00e4 sen esi-is\u00e4viestin<\/h3>\n<p>Kun viestityyppi on hierarkkinen, viesteiss\u00e4 voi olla yl\u00e4tason viestej\u00e4. Oletetaan, ett\u00e4 meill\u00e4 on hierarkkinen mukautettu viestityyppi &#8217; <code>subject<\/code>&#8217; kouluaineille, joissa on tapana tehd\u00e4 paljon lapsipostauksia ja jopa lasten lasten viestej\u00e4. Paremman yleiskuvan saamiseksi haluamme lis\u00e4t\u00e4 sarakkeen, joka n\u00e4ytt\u00e4\u00e4 viestin esivanhemman (&quot;juuriaihe&quot;). Jos viesti on yl\u00e4tason viesti, n\u00e4ytet\u00e4\u00e4n yksinkertainen &#8217;-&#8217;, muuten sarake tulostaa esivanhemman p\u00e4\u00e4viestin otsikon linkiss\u00e4, jolla viesti\u00e4 muokataan.<\/p>\n<p>Koska viittaamme hierarkkiseen viestityyppiin, meid\u00e4n on k\u00e4ytett\u00e4v\u00e4 erilaista koukkua sarakkeen sis\u00e4ll\u00f6n tulostamiseen kuin yll\u00e4 olevassa esimerkiss\u00e4, mutta prosessi on t\u00e4sm\u00e4lleen sama.<\/p>\n<p>T\u00e4m\u00e4 koodi n\u00e4ytt\u00e4\u00e4 my\u00f6s esimerkin sarakkeen lis\u00e4\u00e4misest\u00e4 saraketaulukon keskelle. M\u00e4\u00e4rit\u00e4mme, ett\u00e4 sarakkeemme tulee olla ennen &quot;tekij\u00e4\u00e4&quot; ja k\u00e4yt\u00e4mme PHP-taulukkofunktioita sy\u00f6tt\u00e4m\u00e4\u00e4n elementti oikeaan paikkaan.<\/p>\n<pre><code>add_filter('manage_subject_posts_columns', function($columns) {\n    $offset = array_search('author', array_keys($columns));\n    return array_merge(array_slice($columns, 0, $offset), ['ancestor' =&gt; __('Ancestor', 'textdomain')], array_slice($columns, $offset, null));\n});\n\u00a0\nadd_action('manage_pages_custom_column', function($column_key, $post_id) {\n    if ($column_key == 'ancestor') {\n        $ancestors = get_ancestors($post_id, 'subject', 'post_type');\n        $post_ancestor = end($ancestors);\n        if ($post_ancestor != 0) {\n            echo '&lt;a href=\"'. get_edit_post_link($post_ancestor). '\"&gt;'. get_the_title($post_ancestor). '&lt;\/a&gt;';\n        } else {\n            echo '-';\n        }\n    }\n}, 10, 2);<\/code><\/pre>\n<h3>Sarakkeen poistaminen<\/h3>\n<p>Sarakkeen poistaminen viestityypist\u00e4 on melko yksinkertaista; sinun tarvitsee vain suodattaa viestisarakkeet, poistaa elementti taulukosta ja palauttaa se. Sinun ei tarvitse kytkeyty\u00e4 kolonnin l\u00e4ht\u00f6koukkuun. Esimerkiksi; oletusarvoisen <code>date<\/code>sarakkeen poistaminen viestityypist\u00e4 <code>post<\/code>:<\/p>\n<pre><code>add_filter('manage_post_posts_columns', function($columns) {\n    unset($columns['date']);\n    return $columns;\n});<\/code><\/pre>\n<h3>Oletussarakkeiden nimien tai sijainnin muuttaminen<\/h3>\n<p>Oletetaan, ett\u00e4 meill\u00e4 on mukautettu viestityyppi &#8217; <code>book<\/code>&#8217; ja haluamme korvata oletusarvoisen sarakkeen nimen &quot;Kirjoittaja&quot; sanalla &quot;Julkaisija&quot;. Suodatamme sarakesuodattimen ja annamme avaimelle &#8217; <code>author<\/code>&#8217; erilaisen arvon:<\/p>\n<pre><code>add_filter('manage_book_posts_columns', function($columns) {\n    $columns['author'] = __('Publisher', 'textdomain');\n    return $columns;\n});<\/code><\/pre>\n<p>Sarakkeiden uudelleenj\u00e4rjest\u00e4minen voidaan tehd\u00e4 k\u00e4ytt\u00e4m\u00e4ll\u00e4 PHP-taulukkofunktioita. Muista, ett\u00e4 niiden tuloksena olevan taulukon on oltava assosiatiivinen taulukko, jossa on sarake &quot;ID&quot; avaimina ja niiden otsikko arvoina. T\u00e4m\u00e4 on yksinkertainen esimerkki <code>author<\/code>sarakkeen &#8217; &#8217; poistamisesta ja sen sijoittamisesta aivan loppuun, jolloin sarakkeet j\u00e4rjestet\u00e4\u00e4n uudelleen:<\/p>\n<pre><code>add_filter('manage_post_posts_columns', function($columns) {\n    $taken_out = $columns['author'];\n    unset($columns['author']);\n    $columns['author'] = $taken_out;\n    return $columns;\n});<\/code><\/pre>\n<h3>Muokatun sarakkeen asettaminen lajiteltavaksi<\/h3>\n<p>Oletuksena osa WordPressin sarakkeista on lajiteltavissa, esimerkiksi julkaisun otsikko, kommenttien m\u00e4\u00e4r\u00e4 ja p\u00e4iv\u00e4m\u00e4\u00e4r\u00e4. On mahdollista tehd\u00e4 mukautettu sarake lajiteltavaksi, mutta se vaatii hieman enemm\u00e4n koodia ja koukkua WordPressin viestikyselyyn, jotta WordPress voi kertoa, kuinka tilata viestisi metalla.<\/p>\n<p>Oletetaan, ett\u00e4 meill\u00e4 on mukautettu viestityyppi &quot; <code>movie<\/code>&quot;, ja seuraavalla koodilla lis\u00e4\u00e4mme mukautetun sarakkeen, joka n\u00e4ytt\u00e4\u00e4 mukautetun viestin sis\u00e4ll\u00f6nkuvaustavan &quot; <code>duration<\/code>&quot;.<\/p>\n<pre><code>add_filter('manage_movie_posts_columns', function($columns) {\n    return array_merge($columns, ['duration' =&gt; __('Duration', 'textdomain')]);\n});\n\u00a0\nadd_action('manage_movie_posts_custom_column', function($column_key, $post_id) {\n    if ($column_key == 'duration') {\n        $duration = get_post_meta($post_id, 'duration', true);\n        echo (!empty($duration))? sprintf(__('%s minutes', 'textdomain'), $duration): __('Unknown', 'textdomain');\n    }\n}, 10, 2);<\/code><\/pre>\n<p>Jotta voimme kertoa WordPressille, ett\u00e4 haluamme sarakkeen olevan lajiteltava, meid\u00e4n on kytkeydytt\u00e4v\u00e4 suodattimeen <code>manage_edit-{$post_type}_sortable_columns<\/code>. Lis\u00e4\u00e4mme sarakkeemme suodatettavien sarakkeiden taulukkoon ja m\u00e4\u00e4rit\u00e4mme sitten, mik\u00e4 <code>orderby<\/code>arvon tulee olla. Asetamme sinne yksil\u00f6llisen mukautetun arvon \u2013 saman nimen kuin sarakkeemme \u2013 johon voimme viitata kyselykoukussamme my\u00f6hemmin.<\/p>\n<pre><code>add_filter('manage_edit-movie_sortable_columns', function($columns) {\n    $columns['duration'] = 'duration';\n    return $columns;\n});<\/code><\/pre>\n<p>Jos p\u00e4ivit\u00e4t WordPressin nyt, sinun pit\u00e4isi n\u00e4hd\u00e4, ett\u00e4 mukautettu sarake on todellakin napsautettava ja lajiteltava, mutta se ei j\u00e4rjesty oikein. T\u00e4m\u00e4 johtuu siit\u00e4, ett\u00e4 WordPress ei ymm\u00e4rr\u00e4 &quot; &quot; -arvoa <code>duration<\/code>&quot; &quot;. <code>orderby<\/code>Korjaamme t\u00e4m\u00e4n kytkem\u00e4ll\u00e4 kohtaan &quot; <code>pre_get_posts<\/code>&quot;:<\/p>\n<pre><code>add_action('pre_get_posts', function($query) {\n    if (!is_admin()) {\n        return;\n    }\n    $orderby = $query-&gt;get('orderby');\n    if ($orderby == 'duration') {\n        $query-&gt;set('meta_key', 'duration');\n        $query-&gt;set('orderby', 'meta_value_num');\n    }\n});<\/code><\/pre>\n<p>Koska mukautettu viestimetakuvaamme &#8217; <code>duration<\/code>&#8217; on aina numero, voimme m\u00e4\u00e4ritt\u00e4\u00e4 &#8217; <code>orderby<\/code>&#8217;:ksi &#8217; <code>meta_value_num<\/code>&#8217; numeroiden vertailua varten. S\u00e4\u00e4d\u00e4 kyselyargumentteja mukautetuille viestimeta-arvoillesi sopiviksi.<\/p>\n<h3>Poista oletussarakkeiden lajittelu k\u00e4yt\u00f6st\u00e4<\/h3>\n<p>Oletussarakkeen lajittelun poistaminen k\u00e4yt\u00f6st\u00e4 on melko yksinkertaista. Meid\u00e4n tarvitsee vain kiinnitt\u00e4\u00e4 suodattimeen <code>manage_edit-{$post_type}_sortable_columns<\/code>ja poistaa sarake, jota emme halua lajitella, taulukosta. T\u00e4m\u00e4 esimerkiksi poistaa lajittelun p\u00e4iv\u00e4m\u00e4\u00e4r\u00e4sarakkeesta viestityypin &#8217; <code>post<\/code>&#8217; osalta.<\/p>\n<pre><code>add_filter('manage_edit-post_sortable_columns', function($columns) {\n    unset($columns['date']);\n    return $columns;\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\u00e4ss\u00e4 viestiss\u00e4 k\u00e4sitell\u00e4\u00e4n perusteellisesti, kuinka muokata tai lis\u00e4t\u00e4 sarakkeita viestiluetteloon, sivuille tai mihin tahansa mukautettuun viestityyppiin WordPressin hallintapaneelissa.<\/p>\n","protected":false},"author":1,"featured_media":223841,"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-233308","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\/233308","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=233308"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/233308\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/223841"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=233308"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=233308"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=233308"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}