✅ WEB ja WordPressi uudised, teemad, pistikprogrammid. Siin jagame näpunäiteid ja parimaid veebisaidi lahendusi.

Kuidas WordPressi administraatoris postituste loendisse kohandatud veerge muuta või lisada

22

WordPress võimaldab teil administraatoripaneelil postituste, lehtede või mis tahes kohandatud postituse tüübi loendit muuta ja veerge lisada. Selles postituses uurime, kuidas!

Kuidas WordPressi administraatoris postituste loendisse kohandatud veerge muuta või lisada

Arvestada tuleb kahe konksuga: üks filter veeru asukoha ja pealkirja jaoks ning üks toiming veeru väljundi jaoks iga postituse jaoks. Postituse tüüp on osa konksude nimedest. Vaatame neid ükshaaval, alustades filtrist.

Kolonni filter

Filter WordPressi halduspaneeli postituste loendisse veergude muutmiseks, eemaldamiseks või lisamiseks on manage_{$post_type}_posts_columns. Vahetage {$post_type}soovitud postitustüübiga. Näiteks; kui soovite muuta postituse tüübi „ post" veerge, on filtri nimi manage_post_posts_columns. Ja kohandatud postituse tüübi „ product” puhul oleks filtri nimi manage_product_posts_columns.

PS: WordPressil on veerufilter ainult postituse tüübi jaoks ‘ page‘: manage_pages_columns, kuid sama tulemuse saate filtrit kasutades manage_page_posts_columns.

Filtri argumendina saate selle postituse tüübi kõigi veergude täieliku massiivi. Igal veerul on kordumatu võti ja nende väärtused on veerupäises näidatud sildid. Võtmed on cbnäiteks märkeruudu veeru titlejaoks " " ja postituse pealkirja veeru jaoks " ". Elementide järjekord massiivis määrab veergude järjestuse.

Uue veeru lisamiseks peate lihtsalt massiivile uue võtme + väärtuse paari lisama ja selle tagastama. Saate massiivi vastavalt soovile manipuleerida – näiteks seda ümber järjestada.

Veeru sisu konks

Millist konksu peate veeru sisu väljundi juhtimiseks kasutama, sõltub sellest, kas teie postituse tüüp on seatud hierarhiliseks või mitte. Hierarhiline postituse tüüp on määratletud nagu 'hierarchical' => true. register_post_typeKõik mittehierarhilised postitustüübid, sealhulgas WordPressi sisseehitatud postituse tüüp post, kasutavad konksu nime manage_{$post_type}_custom_column. Kõik hierarhilised postitustüübid, sealhulgas WordPressi sisseehitatud postituse tüüp ‘ page‘, kasutavad konksu nime manage_pages_custom_column(märkus: konksu nimetusse ei sisestata postituse tüübi nime).

Selle konksu argumentidena saate veeru nime, mis on ülaltoodud veerufiltris mainitud võti (nt cbmärkeruudu veeru jaoks " "), ja teiseks postituse ID. Seda konksu käivitatakse iga postituse puhul ja põhieeldus on see, et kontrollite, kas oleme õiges veerutüübis või mitte (võtme järgi), ja kui oleme, kasutage postituse ID-d postituse meta vms toomiseks ja selle väljastamiseks sa soovid.

Näited

Vaatame mõnda praktiliste näidete koodi.

Lisage postitustele kohandatud veerg, mis kuvab kohandatud postituse meta

See on kohandatud veergude lisamise lihtsaim viis. Oletame, et tahame lisada kohandatud veeru postituse tüübile „postitus”. Soovime, et see oleks veergude lõpus, nimega „Kinnitatud”, ja see peaks sõltuvalt kohandatud postituse metaväärtusest väljastama „Jah” või „Ei”. Märkus. See näide ei hõlma kohandatud postituse meta salvestamist ega värskendamist.

functions.phpLisame oma teemas või pistikprogrammi koodis või suvalises kohas veeru enda, ühendades selle veergude massiivi, ning veeru väljundi konksus toome postituse meta väärtuse ja väljastame selle .

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);

Väljund võib olla ükskõik milline, ma lihtsalt lisasin spanväljundi ümber erinevate tekstivärvidega, et neid oleks lihtne tuvastada.

Lisage kohandatud veerg hierarhilisele kohandatud postituse tüübile, mis kuvab selle esivanema postituse

Kui postituse tüüp on hierarhiline, võivad postitused sisaldada emapostitusi. Oletame, et meil on kooliainete jaoks hierarhiline kohandatud postituse tüüp " subject", kus on kombeks teha palju lastepostitusi ja isegi laste postitusi. Parema ülevaate saamiseks tahame lisada veeru, mis kuvab postituse esivanema (“juurteema”). Kui postitus on tipptaseme postitus, näidatakse lihtsat ‘-‘, vastasel juhul väljastab veerg postituse redigeerimise lingis esivanema ülempostituse pealkirja.

Kuna me viitame hierarhilisele postitustüübile, peame veeru sisu väljastamiseks kasutama ülaltoodud näitest erinevat konksu, kuid protsess on täpselt sama.

See kood näitab ka näidet, kuidas sisestada veerg veergude massiivi keskele. Määratleme, et meie veerg peaks asuma enne sõna „autor” ja kasutama PHP massiivi funktsioone, et sisestada element õigesse asendisse.

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);

Veeru eemaldamine

Veeru eemaldamine postituse tüübist on üsna lihtne; kõik, mida vajate, on postituste veerud filtreerida, element massiivist eemaldada ja tagastada. Te ei pea veeru väljundkonksu külge haakima. Näiteks; vaikeveeru „ date” eemaldamine postituse tüübist „ post“:

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

Vaikimisi veergude nimede või positsiooni muutmine

Oletame, et meil on kohandatud postituse tüüp bookja me tahame asendada veeru vaikenime "Autor" sõnaga "Publisher". Me lihtsalt filtreerime veergude filtri ja anname võtmele ‘ author‘ teise väärtuse:

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

Veergude ümberjärjestamist saab teha PHP massiivi funktsioonide abil. Pidage meeles, et nende tulemuseks olev massiiv peab olema assotsiatiivne massiiv, mille võtmeteks on veerg „ID” ja väärtusteks on nende silt. See on lihtne näide veeru ‘ ‘ välja võtmisest authorja selle kõige lõppu asetamisest, mis muudab veergude järjestuse:

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

Kohandatud veeru määramine sorteeritavaks

Vaikimisi on mõned WordPressi veerud sorteeritavad, näiteks postituse pealkiri, kommentaaride arv ja kuupäev. Kohandatud veeru on võimalik sorteeritavaks muuta, kuid selleks on vaja natuke rohkem koodi ja haakumist WordPressi postituspäringu konksuga, et WordPressile postituse meta järgi järjestada, kuidas järjestada.

Oletame, et meil on kohandatud postituse tüüp " movie" ja järgmise koodiga lisame kohandatud veeru, mis kuvab kohandatud postituse meta " 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);

Selleks, et öelda WordPressile, et tahame, et meie veerg oleks sorteeritav, peame haakima filtriga manage_edit-{$post_type}_sortable_columns. Lisame oma veeru filtreeritavate veergude massiivi ja seejärel määratleme, milline orderbypeaks olema ‘ ‘ väärtus. Seadsime seal ainulaadse kohandatud väärtuse – sama nime, mis meie veerul –, millele saame hiljem oma päringukonksus viidata.

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

Kui värskendate WordPressi praegu, peaksite nägema, et meie kohandatud veerg on tõepoolest klõpsatav ja sorteeritav, kuid see ei sorteeri õigesti. Põhjus on selles, et WordPress ei mõista „ duration” kui „ orderby” väärtust. Selle parandame, ühendades üksuse " 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');
    }
});

Kuna meie kohandatud postituse meta " duration" on alati arv, saame arvude võrdlemiseks määratleda " orderby" kui " ". meta_value_numKohandage päringu argumente, et need sobiksid teie kohandatud postituse metaväärtustega.

Keela vaikeveergude sortimine

Vaikeveeru sortimise keelamine on üsna lihtne. Kõik, mida me peame tegema, on haakida filtrisse manage_edit-{$post_type}_sortable_columnsja eemaldada massiivist veerg, mida me ei soovi sorteerida. Näiteks eemaldab see kuupäeva veeru sortimise postituse tüübi " post" puhul.

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

See veebisait kasutab teie kasutuskogemuse parandamiseks küpsiseid. Eeldame, et olete sellega rahul, kuid saate soovi korral loobuda. Nõustu Loe rohkem