Dostosowywanie tabel administracyjnych WordPress: zaawansowane modyfikacje

Opublikowany: 2021-01-26

W naszym pierwszym artykule z naszej serii na temat dostosowywania tabel administracyjnych WordPressa przyjrzeliśmy się, jak zastosować podstawową konfigurację do ekranów administracyjnych naszych typów postów, w tym dodać niestandardową kolumnę i umożliwić jej sortowanie.

Dzisiaj pójdziemy o krok dalej i przyjrzymy się dodatkowym modyfikacjom, które można zastosować w tabeli admin listy postów. Kontynuujmy!

Ulepszanie tabeli postów administracyjnych WordPress

Udostępnienie dodatkowych informacji na ekranie tabeli administratora dla użytkowników zaplecza z pewnością poprawi ich przepływ pracy. W tym samouczku postaramy się ulepszyć dane wyświetlane w naszej tabeli post-administracyjnej, dodając informacje, modyfikując istniejącą zawartość, zmieniając kolejność kolumn, a nawet usuwając niepotrzebne kolumny.

Wyświetl polecane obrazy

Przydałoby się dodać wyróżnioną miniaturę do listy postów w tabeli administratora. To naprawdę przyspieszyłoby możliwość sprawdzenia, czy post ma zły obraz (lub być może w ogóle nie ma obrazu) bez konieczności otwierania każdego pojedynczego posta.

Aby to osiągnąć, utworzymy kolumnę polecanego obrazu dla naszej strony edycji posta i wypełnimy ją miniaturą obrazu. Jak pokazano w naszym poprzednim artykule, użyjemy manage_posts_columns . Jeśli jeszcze nie przeczytałeś tego artykułu, zrób to, ponieważ zawiera on część kodu wymaganego do tego samouczka.

Jeśli przeczytałeś artykuł i podążałeś za nim, powinieneś mieć następujący kod w pliku functions.php twojego aktywnego motywu. Jeśli nie, dodaj to!

 add_filter('manage_posts_columns','add_custom_columns'); function add_custom_columns( $columns ) { $columns['last_modified'] = 'Last modified'; return $columns; } add_action( 'manage_posts_custom_column','custom_columns_content', 10, 2 ); function custom_columns_content ( $column_id, $post_id ) { switch( $column_id ) { case 'last_modified': echo get_post_field('post_modified', $post_id); break; } }

Aby wyświetlić wyróżniony obraz w naszej tabeli administracyjnej, musimy edytować ten kod w następujący sposób:

 add_filter('manage_posts_columns','add_custom_columns'); function add_custom_columns( $columns ) { $columns['last_modified'] = 'Last modified'; $columns['my_post_thumbs'] = 'Thumbs'; return $columns; } add_action( 'manage_posts_custom_column','custom_columns_content', 10, 2 ); function custom_columns_content ( $column_id, $post_id ) { switch( $column_id ) { case 'last_modified': echo get_post_field('post_modified', $post_id); break; case 'my_post_thumbs': echo the_post_thumbnail( 'thumbnail' ); break; } }

Liczby 10 i 2 w trzecim i czwartym argumencie określają priorytet, w jakim będą przetwarzane funkcje związane z tą akcją. Te argumenty zostaną przekazane do naszej funkcji custom_columns_content .

Domyślnym priorytetem jest 10. Liczba 2 pokazuje ilość argumentów funkcji. Dlatego w naszym przypadku ważne jest uwzględnienie tych liczb, ponieważ mamy 2 argumenty, a mianowicie $column_id i $post_id post_id .

Teraz, po zapisaniu tego kodu, zobaczmy, co mamy na naszym ekranie postów administratora.

Tabela administratora WordPress zawiera obrazy

Jak widać, mamy teraz kolumnę „Ostatnia modyfikacja” i naszą nową kolumnę „Kciuki”.

Zmień etykiety kolumn

Przypuśćmy, że z jakiegoś powodu chcemy zmienić etykietę kolumny, na przykład zmień nazwę kolumny „Autor” na „Writer”. Aby to zrobić, możemy po prostu zdefiniować nową etykietę w taki sam sposób, w jaki dodaliśmy naszą niestandardową kolumnę. Po raz kolejny, aby nasz kod był bardziej charakterystyczny, oddzielimy fragmenty kodu zmiany nazwy za pomocą innej funkcji.

 add_filter('manage_posts_columns','rename_columns'); function rename_columns( $columns ) { $columns['author'] = 'Writer'; return $columns; }

Oczywiście możesz zmienić etykietę wielu kolumn w tym samym fragmencie kodu, dodając po prostu $columns['COLUMN_ID'] = 'NEW_LABEL'; tuż przed return $columns;

Ulepsz tabelę stron administracyjnych WordPress

Być może nie zdajesz sobie z tego sprawy, ale strony WordPress są hierarchicznym typem wpisu, co oznacza, że ​​każda strona może mieć stronę nadrzędną.

Bardzo pomocne może być natychmiastowe sprawdzenie, która strona jest stroną nadrzędną dowolnej strony podrzędnej. Zobaczmy, jak to zrobić.

Dodaj niestandardową kolumnę, która wyświetla nadrzędny post

Najpierw utworzono kilka stron nadrzędnych i podrzędnych z kilkoma powiązanymi polecanymi obrazami.

Wpisy nadrzędne i podrzędne w tabeli administratora WordPress

Następnie umieścimy trochę kodu w naszym pliku functions.php . Będziemy postępować zgodnie z tym samym procesem, co w przypadku typu Posts, dodając coś, co nazwiemy kolumną „Przodek”.

 add_filter('manage_pages_columns','add_ancestor_column'); function add_ancestor_column( $columns ) { $columns['ancestor'] = 'Ancestor'; return $columns; }

To samo dotyczy umieszczenia kolumny w żądanej pozycji w tabeli. Zmienimy kolejność kolumn w tabeli, tak aby kolumna „Przodek” znajdowała się przed kolumną Autor.

 add_filter('manage_pages_columns', 'change_ancestor_column_position'); function change_ancestor_column_position($columns) { $n_columns = array(); foreach($columns as $key => $value) { if ($key=='author'){ $n_columns['ancestor'] = 'ancestor'; } $n_columns[$key] = $value; } return $n_columns; }

W tym momencie na ekranie administratora Pages powinieneś zobaczyć coś takiego:

Ostatnią rzeczą, którą musimy zrobić, to wypełnić kolumnę „Przodek” odpowiednią treścią. Ponieważ tym razem pracujemy z hierarchicznym typem wpisu, użyjemy innego haka do pobrania zawartości kolumny. Spróbuj wstawić ten fragment kodu i sprawdź wynik.

 add_action( 'manage_pages_custom_column','ancestor_column_content', 10, 2 ); function ancestor_column_content ( $column_id, $post_id ) { switch( $column_id ) { case '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 '-'; } break; } }

Powinieneś teraz zobaczyć powiązaną stronę nadrzędną obok ich stron podrzędnych wymienionych w kolumnie „Przodek”.

Jest to szczególnie przydatne, gdy kolejność stron w tabeli administracyjnej zostanie zakłócona (np. ponieważ są one posortowane według daty publikacji itp.), a zatem strony podrzędne nie są już starannie wyświetlane pod odpowiednimi stronami nadrzędnymi.

Zmiana domyślnych kolumn

Jest kilka rzeczy, które można zrobić, aby ulepszyć domyślne kolumny tabeli Admin. Przyjrzyjmy się niektórym z nich.

Zmiana kolejności kolumn

W naszym poprzednim artykule na temat dostosowywania tabel administracyjnych dodaliśmy nową kolumnę, która wyświetla datę ostatniej modyfikacji posta. Ale co, jeśli chcemy zmienić jego pozycję w kolejności kolumn?

Jest to na szczęście całkiem proste i można je zaimplementować za pomocą haka manage_posts_columns .

Należy zdefiniować kolumnę, którą należy przesunąć oraz kolumnę bezpośrednio przed miejscem, w którym chcemy umieścić naszą kolumnę. Jeśli więc na przykład chcemy, aby obraz funkcji był pierwszą kolumną tabeli, będziemy musieli przenieść go przed kolumnę tytułową. Odpowiedni kod elementu powinien wyglądać tak:

 add_filter('manage_posts_columns', 'change_column_order'); function change_column_order($columns) { $n_columns = array(); $move = 'author'; // what to move $before = 'title'; // move before this foreach($columns as $key => $value) { if ($key==$before){ $n_columns[$move] = $move; } $n_columns[$key] = $value; } return $n_columns; }

I voila!

dodaj polecane obrazy do swoich tabel administracyjnych WordPress

Usuwanie kolumny

Czasami niektóre kolumny tabeli z listą postów nie są szczególnie przydatne i byłoby lepiej, gdyby zostały usunięte, aby zwolnić trochę miejsca. Częstym kandydatem do tego jest kolumna komentarzy.

Na szczęście bardzo łatwo jest usunąć kolumnę z naszego stołu. Musimy tylko dodać unset($columns['comments']); w funkcji haka manage_posts_columns . Chociaż można by to dodać do naszego istniejącego kodu, lepiej byłoby, gdybyśmy mogli oddzielić to do własnego fragmentu kodu, ponieważ ma on inny cel i wprowadza nową funkcję do przechwycenia.

 add_filter('manage_posts_columns' , 'remove_columns'); function remove_columns($columns) { unset($columns['comments']); return $columns; }

I to wszystko. Odśwież ekran administratora i powinieneś zobaczyć, że kolumna Komentarze zniknęła.

Uwaga: Jeśli nie masz pewności, jaki jest identyfikator kolumny, możesz to wykryć za pomocą konsoli inspektora przeglądarki.

Wtyczka kolumn administracyjnych

Jeśli nie chcesz kodować zmian w swoich tabelach administracyjnych WordPressa, nie obawiaj się… ponieważ jest to WordPress, istnieje wtyczka, która pozwoli Ci dokonać wielu aktualizacji bez konieczności dotykania wiersza kodu. Nazywa się to kolumnami administracyjnymi.

Uwaga: Przed przystąpieniem do instalacji/aktywacji wtyczki lepiej cofnąć wszystkie dostosowania w tabeli z listą postów (jeśli jakieś wprowadziłeś) i zacząć korzystać z wtyczki z tabelą postów administratora w jej początkowym stanie.

Po pobraniu i zainstalowaniu wtyczki przejdź do pozycji menu Ustawienia > Kolumny administratora. Stąd możesz wybrać tabelę listy postów (lub dowolny inny typ postu, w którym chcesz edytować jego tabelę administracyjną) z listy rozwijanej. Zobaczysz wtedy aktualną strukturę tabeli.

Teraz, korzystając z interfejsu typu „przeciągnij i upuść”, możesz łatwo zmienić kolejność kolumn. Możesz również edytować etykietę typu i szerokość, używając ikony strzałki, aby wyświetlić ich konfigurację.

I tak, możesz nawet dodać własne kolumny za pomocą przycisku „Dodaj kolumnę” w prawym dolnym rogu!

Wtyczka tak naprawdę zbiera wszystkie opcje dostępne z tabel bazy danych, które odnoszą się do typu postów, i udostępnia je w menu rozwijanym Typ. Jeśli więc na przykład chcesz dodać kolumnę „Ostatnia modyfikacja”, tak jak robiliśmy to wcześniej, po prostu znajdź ją i wybierz z listy Typ, a następnie nadaj jej etykietę i żądaną szerokość.

Następnie możesz zmienić opcje formatu daty, które pojawią się, jeśli chcesz.

Wniosek

Posiadanie odpowiednich informacji w tabelach administracyjnych WordPressa może naprawdę przyspieszyć przepływ pracy i pomóc w zapobieganiu błędom w Twojej witrynie. Na przykład znacznie mniej prawdopodobne jest, że świadomie opublikujesz post bez polecanego obrazu, gdy możesz zobaczyć wszystkie swoje posty i powiązane z nimi polecane obrazy na pierwszy rzut oka w tabeli Administrator postów. Graj i skonfiguruj swoje tabele administracyjne, aby pasowały do ​​Ciebie i Twojego przepływu pracy.