Сразу говорю, я не буду править файлы движка WordPress, все действия будут проводиться в functions.php в теме.
Таксономии
Обычно в случае с добавлениями колонок в таблицу таксономий, дело не обходится одной только функцией, доходит даже до создания ещё одной таблицы в базе данных для хранения мета таксономий.
Но не всегда, ведь например можно использовать description для хренения URL какой-нибудь картинки, описывающей таксономию, то есть можно удалить саму колонку с описанием, зато добавить другую, где вставляется то же самое описание, но только через тег или через css background-image.
Как это может выглядеть:
Вставка колонки делится на два этапа — это добавление и заполнение.
1-й этап. Добавление колонки в таблицу.
Первый вариант кода, здесь просто перечисляем все колонки, тем самым можно удалить старые и добавить новые:
function true_add_columns($my_columns) { $my_columns = array( 'cb' => '<input type="checkbox" />', 'preview' => 'Превью' 'name' => __('Name'), // 'description' => __('Description'), 'slug' => __('Slug'), 'posts' => __('Posts') ); return $my_columns; } add_filter("manage_edit-{название таксономии}_columns", 'true_add_columns'); |
Во втором варианте просто добавляем новую, независимо от того, какие колонки уже существуют:
function true_add_columns($my_columns) { $preview = array( 'preview' => 'Превью' ); $my_columns = array_slice( $my_columns, 0, 1, true ) + $preview + array_slice( $my_columns, 1, NULL, true ); return $my_columns; } add_filter("manage_edit-{название таксономии}_columns", 'true_add_columns'); |
Не забудьте заменить {название таксономии} — на название таксономии, то есть category, post_tag, либо ваше собственное и без фигурных скобок!
2-й этап. Содержимое колонки.
Как я и говорил, описание таксономии будет являться URL-ом картинки.
function fill_columns($out, $column_name, $id) { $term = get_term($id, '{название таксономии}'); switch ($column_name) { case 'preview': $out .= '<img src="'.$term->description.'" width="48" height="48" />'; break; default: break; } return $out; } add_filter("manage_{название таксономии}_custom_column", 'fill_columns', 10, 3); |
Вот ещё один пример, в нём была добавлена колонка с ID для рубрик и меток.
P.S. Ширину колонок можно настроить с помощью стилей.
Записи, типы записей
В этом случае думаю лучше всего будет создать колонку со значением какого-нибудь произвольного поля, можно конечно добавить ID записей, но об этом я уже писал.
Как и в случае с таксономиями, здесь будет два этапа:
1-й этап. Варианты добавления колонки в таблицу.
Вообще, если разбираешься в PHP, то все эти три варианта сводятся к одному.
1-й вариант:
function true_add_post_columns($my_columns){ $my_columns['keywords'] = 'Ключевые слова'; return $my_columns; } add_filter( 'manage_edit-{тип}_columns', 'true_add_post_columns', 10, 1 ); |
2-й вариант:
function true_add_post_columns($my_columns){ $keywords = array( 'keywords' => 'Ключевые слова' ); $my_columns = array_slice( $my_columns, 0, 1, true ) + $preview + array_slice( $my_columns, 1, NULL, true ); return $my_columns; } add_filter( 'manage_edit-{тип}_columns', 'true_add_post_columns', 10, 1 ); |
3-й вариант, с описанием всех колонок в массиве:
function true_add_post_columns($my_columns){ $my_columns = array( 'title' => __('Title'), 'categories' => __('Categories'), 'tags' => __('Tags'), 'comments' => '<span class="vers"><img alt="Comments" src="'.site_url().'/wp-admin/images/comment-grey-bubble.png" /></span>', 'author' => __('Author'), 'keywords' => 'Ключевые слова', 'date' => __('Date') ); return $my_columns; } add_filter( 'manage_edit-{тип}_columns', 'true_add_post_columns', 10, 1 ); |
В последней строчке также замените {тип} на нужный тип записи, например post, page или что-то своё.
2-й этап. Заполнение колонки.
А здесь будет один-единственный фильтр, даже не придётся указывать тип, эта функция общая для всех.
function true_fill_post_columns( $column ) { global $post; switch ( $column ) { case 'keywords': echo get_post_meta($post->ID, 'seo_keywords', true); break; } } add_action( 'manage_posts_custom_column', 'true_fill_post_columns', 10, 1 ); |
Ну вот и всё, как вы уже наверное поняли, seo_keywords (5-я строчка) — это название произвольного поля.
Источник: misha.blog