✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

Kuinka muokata tai lisätä mukautettuja sarakkeita viestiluetteloon WordPress Adminissa

18

WordPressin avulla voit muokata ja lisätä sarakkeita viestiluetteloon, sivuille tai mihin tahansa mukautettuun viestityyppiin hallintapaneelissa. Tässä postauksessa katsotaan miten!

Kuinka muokata tai lisätä mukautettuja sarakkeita viestiluetteloon WordPress Adminissa

On otettava huomioon kaksi koukkua: yksi suodatin sarakkeen sijaintia ja otsikkoa varten ja yksi toiminto sarakkeen tulosteelle jokaiselle viestille. Viestityyppi on osa koukkujen nimiä. Katsotaanpa niitä yksitellen suodattimesta alkaen.

Pylvässuodatin

Suodatin WordPressin hallintapaneelin viestiluetteloon muokkaamiseen, poistamiseen tai sarakkeiden lisäämiseen on manage_{$post_type}_posts_columns. Vaihda {$post_type}haluttuun postityyppiin. Esimerkiksi; jos haluat muokata viestityypin sarakkeita post, suodattimen nimi on manage_post_posts_columns. Ja mukautetulle viestityypille productsuodattimen nimi olisi manage_product_posts_columns.

PS: WordPressissä on sarakesuodatin vain viestityypille ’ page’: manage_pages_columns, mutta sama tulos saavutetaan käyttämällä suodatinta manage_page_posts_columns.

Suodattimen argumenttina toimitettuna saat täyden joukon kyseisen viestityypin kaikista sarakkeista. Jokaisella sarakkeella on yksilöllinen avain, ja niiden arvot ovat sarakkeen otsikossa näkyvät tunnisteet. Esimerkkejä avaimista ovat " cb" valintaruutusarakkeelle ja " title" viestin otsikkosarakkeelle. Elementtien järjestys taulukossa määrittää sarakkeiden järjestyksen.

Uuden sarakkeen lisääminen edellyttää yksinkertaisesti uuden avain + arvo -parin lisäämistä taulukkoon ja sen palauttamista. Voit muokata taulukkoa haluamallasi tavalla – esimerkiksi järjestämällä sen uudelleen.

Sarakkeen sisällön koukku

Mitä koukkua sinun tulee käyttää sarakkeen sisällön ohjaamiseen, riippuu siitä, onko viestityyppisi asetettu hierarkkiseksi vai ei. Hierarkkinen viestityyppi on määritetty kuten 'hierarchical' => truekohdassa register_post_type. Kaikki ei-hierarkkiset viestityypit, mukaan lukien WordPressin sisäänrakennettu viestityyppi ’ post’, käyttävät koukun nimeä manage_{$post_type}_custom_column. Kaikki hierarkkiset viestityypit, mukaan lukien WordPressin sisäänrakennettu viestityyppi ’ page’, käyttävät koukun nimeä manage_pages_custom_column(huomaa: viestityypin nimeä ei kirjoiteta koukun nimeen).

Tämän koukun argumenteiksi annettuna saat sarakkeen nimen, joka on yllä olevassa sarakesuodattimessa mainittu avain (esim. ’ cb’ valintaruutusarakkeelle), ja toiseksi viestitunnuksen. Tämä koukku ajetaan jokaisessa viestissä, ja peruslähtökohtana on, että tarkistat, olemmeko oikealla saraketyypillä (avaimella), ja jos olemme, käytä viestitunnusta postmeta tai vastaavan hakemiseen ja tulosta mitä haluat.

Esimerkkejä

Katsotaanpa joitain käytännön esimerkkejä.

Lisää viesteihin mukautettu sarake, joka näyttää mukautetun viestisisällön

Tämä on yksinkertaisin tapa lisätä mukautettuja sarakkeita. Oletetaan, että haluamme lisätä mukautetun sarakkeen viestityyppiin "post". Haluamme sen olevan sarakkeiden loppuun, nimeltään "Verified", ja sen pitäisi tulostaa "Kyllä" tai "Ei" mukautetusta postin meta-arvosta riippuen. Huomautus: Tämä esimerkki ei sisällä mukautetun post-meta-arvon tallentamista tai päivittämistä.

Lisäämme itse functions.phpsarakkeen tai mihin tahansa teema- tai laajennuskoodiimme yhdistämällä sen saraketaulukkoon, ja sarakkeen tulosteen koukussa haemme post-meta-arvon ja tulostamme sen.

add_filter('manage_post_posts_columns', function($columns) {
    return array_merge($columns, ['verified' => __('Verified', 'textdomain')]);
});
 
add_action('manage_post_posts_custom_column', function($column_key, $post_id) {
    if ($column_key == 'verified') {
        $verified = get_post_meta($post_id, 'verified', true);
        if ($verified) {
            echo '<span style="color:green;">'; _e('Yes', 'textdomain'); echo '</span>';
        } else {
            echo '<span style="color:red;">'; _e('No', 'textdomain'); echo '</span>';
        }
    }
}, 10, 2);

Tulos voi olla mitä tahansa haluat, lisäsin yksinkertaisesti spantulosteen ympärille eri tekstiväreillä tunnistamisen helpottamiseksi.

Lisää mukautettu sarake hierarkkiseen mukautettuun viestityyppiin, joka näyttää sen esi-isäviestin

Kun viestityyppi on hierarkkinen, viesteissä voi olla ylätason viestejä. Oletetaan, että meillä on hierarkkinen mukautettu viestityyppi ’ subject’ kouluaineille, joissa on tapana tehdä paljon lapsipostauksia ja jopa lasten lasten viestejä. Paremman yleiskuvan saamiseksi haluamme lisätä sarakkeen, joka näyttää viestin esivanhemman ("juuriaihe"). Jos viesti on ylätason viesti, näytetään yksinkertainen ’-’, muuten sarake tulostaa esivanhemman pääviestin otsikon linkissä, jolla viestiä muokataan.

Koska viittaamme hierarkkiseen viestityyppiin, meidän on käytettävä erilaista koukkua sarakkeen sisällön tulostamiseen kuin yllä olevassa esimerkissä, mutta prosessi on täsmälleen sama.

Tämä koodi näyttää myös esimerkin sarakkeen lisäämisestä saraketaulukon keskelle. Määritämme, että sarakkeemme tulee olla ennen "tekijää" ja käytämme PHP-taulukkofunktioita syöttämään elementti oikeaan paikkaan.

add_filter('manage_subject_posts_columns', function($columns) {
    $offset = array_search('author', array_keys($columns));
    return array_merge(array_slice($columns, 0, $offset), ['ancestor' => __('Ancestor', 'textdomain')], array_slice($columns, $offset, null));
});
 
add_action('manage_pages_custom_column', function($column_key, $post_id) {
    if ($column_key == 'ancestor') {
        $ancestors = get_ancestors($post_id, 'subject', 'post_type');
        $post_ancestor = end($ancestors);
        if ($post_ancestor != 0) {
            echo '<a href="'. get_edit_post_link($post_ancestor). '">'. get_the_title($post_ancestor). '</a>';
        } else {
            echo '-';
        }
    }
}, 10, 2);

Sarakkeen poistaminen

Sarakkeen poistaminen viestityypistä on melko yksinkertaista; sinun tarvitsee vain suodattaa viestisarakkeet, poistaa elementti taulukosta ja palauttaa se. Sinun ei tarvitse kytkeytyä kolonnin lähtökoukkuun. Esimerkiksi; oletusarvoisen datesarakkeen poistaminen viestityypistä post:

add_filter('manage_post_posts_columns', function($columns) {
    unset($columns['date']);
    return $columns;
});

Oletussarakkeiden nimien tai sijainnin muuttaminen

Oletetaan, että meillä on mukautettu viestityyppi ’ book’ ja haluamme korvata oletusarvoisen sarakkeen nimen "Kirjoittaja" sanalla "Julkaisija". Suodatamme sarakesuodattimen ja annamme avaimelle ’ author’ erilaisen arvon:

add_filter('manage_book_posts_columns', function($columns) {
    $columns['author'] = __('Publisher', 'textdomain');
    return $columns;
});

Sarakkeiden uudelleenjärjestäminen voidaan tehdä käyttämällä PHP-taulukkofunktioita. Muista, että niiden tuloksena olevan taulukon on oltava assosiatiivinen taulukko, jossa on sarake "ID" avaimina ja niiden otsikko arvoina. Tämä on yksinkertainen esimerkki authorsarakkeen ’ ’ poistamisesta ja sen sijoittamisesta aivan loppuun, jolloin sarakkeet järjestetään uudelleen:

add_filter('manage_post_posts_columns', function($columns) {
    $taken_out = $columns['author'];
    unset($columns['author']);
    $columns['author'] = $taken_out;
    return $columns;
});

Muokatun sarakkeen asettaminen lajiteltavaksi

Oletuksena osa WordPressin sarakkeista on lajiteltavissa, esimerkiksi julkaisun otsikko, kommenttien määrä ja päivämäärä. On mahdollista tehdä mukautettu sarake lajiteltavaksi, mutta se vaatii hieman enemmän koodia ja koukkua WordPressin viestikyselyyn, jotta WordPress voi kertoa, kuinka tilata viestisi metalla.

Oletetaan, että meillä on mukautettu viestityyppi " movie", ja seuraavalla koodilla lisäämme mukautetun sarakkeen, joka näyttää mukautetun viestin sisällönkuvaustavan " duration".

add_filter('manage_movie_posts_columns', function($columns) {
    return array_merge($columns, ['duration' => __('Duration', 'textdomain')]);
});
 
add_action('manage_movie_posts_custom_column', function($column_key, $post_id) {
    if ($column_key == 'duration') {
        $duration = get_post_meta($post_id, 'duration', true);
        echo (!empty($duration))? sprintf(__('%s minutes', 'textdomain'), $duration): __('Unknown', 'textdomain');
    }
}, 10, 2);

Jotta voimme kertoa WordPressille, että haluamme sarakkeen olevan lajiteltava, meidän on kytkeydyttävä suodattimeen manage_edit-{$post_type}_sortable_columns. Lisäämme sarakkeemme suodatettavien sarakkeiden taulukkoon ja määritämme sitten, mikä orderbyarvon tulee olla. Asetamme sinne yksilöllisen mukautetun arvon – saman nimen kuin sarakkeemme – johon voimme viitata kyselykoukussamme myöhemmin.

add_filter('manage_edit-movie_sortable_columns', function($columns) {
    $columns['duration'] = 'duration';
    return $columns;
});

Jos päivität WordPressin nyt, sinun pitäisi nähdä, että mukautettu sarake on todellakin napsautettava ja lajiteltava, mutta se ei järjesty oikein. Tämä johtuu siitä, että WordPress ei ymmärrä " " -arvoa duration" ". orderbyKorjaamme tämän kytkemällä kohtaan " pre_get_posts":

add_action('pre_get_posts', function($query) {
    if (!is_admin()) {
        return;
    }
    $orderby = $query->get('orderby');
    if ($orderby == 'duration') {
        $query->set('meta_key', 'duration');
        $query->set('orderby', 'meta_value_num');
    }
});

Koska mukautettu viestimetakuvaamme ’ duration’ on aina numero, voimme määrittää ’ orderby’:ksi ’ meta_value_num’ numeroiden vertailua varten. Säädä kyselyargumentteja mukautetuille viestimeta-arvoillesi sopiviksi.

Poista oletussarakkeiden lajittelu käytöstä

Oletussarakkeen lajittelun poistaminen käytöstä on melko yksinkertaista. Meidän tarvitsee vain kiinnittää suodattimeen manage_edit-{$post_type}_sortable_columnsja poistaa sarake, jota emme halua lajitella, taulukosta. Tämä esimerkiksi poistaa lajittelun päivämääräsarakkeesta viestityypin ’ post’ osalta.

add_filter('manage_edit-post_sortable_columns', function($columns) {
    unset($columns['date']);
    return $columns;
});

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja