Если вы используете пользовательские таксономии, то для управления постами удобно создать инструменты, с помощью которых можно отфильтровать посты по этим таксономиям. Это можно сделать, воспользовавшись кодом из поста Создание фильтра пользовательской таксономии в списке постов административной части WordPress – вариант достаточно удобный, однако имеющий один недостаток: хотя с помощью фильтра и можно выбрать посты определенной таксономии, названия пользовательских таксономий видны только при редактировании свойств записи или при полноценном редактировании записи. В списке постов административной части блога есть несколько колонок, по которым можно бегло оценить свойства записи: автор, рубрика, метки, количество комментариев, дата последнего редактирования, – неплохо бы добавить к этим колонками и колонки с названиями пользовательских таксономий.
Это можно сделать, если вставить нижеприведенный код в файл functions.php:
add_action('admin_init','taxocol_admin_init'); function taxocol_admin_init(){ $post_types = get_post_types( ); foreach($post_types as $post_type){ add_filter('manage_'.$post_type.'_posts_columns','taxocol_taxlist_th'); add_action('manage_'.$post_type.'_posts_custom_column','taxocol_taxlist_td',10,2); } } function taxocol_taxlist_th($columns){ global $post_type; $postax = get_taxonomies( array( '_builtin'=>false,'object_type'=>array( $post_type ) ), 'objects' ); foreach($postax as $tax){ if(!in_array($post_type, $tax->object_type)){ continue; } $offset = 1+array_search('author',array_keys($columns)); $columns = array_slice($columns,0,$offset,true) + array($tax->name=>"<div>name}'>{$tax->labels->name}</div>") + array_slice($columns,$offset,NULL,true); } return $columns; } function taxocol_taxlist_td($col_name, $post_id){ global $post_type; $post_terms = array(); $tax = $col_name; $postax = get_taxonomies( array( '_builtin'=>false,'object_type'=>array( $post_type ) ), 'objects' ); if(array_key_exists($tax, $postax)){ $terms = get_the_terms($post_id, $tax); if ( !empty($terms) ) { foreach ( $terms as $term ){ $post_terms[] = "<a>slug}'> " . esc_html(sanitize_term_field('name', $term->name, $term->term_id, $tax, 'edit')) . "</a>"; } echo implode( ', ', $post_terms ); } else { echo '<em>---</em>'; } } }
Пользовательские таксономии автоматически отображаются в виде отдельных колонок, отображение которых можно регулировать в закладке Настройка экрана.
Как можно отредактировать ширину колонки, удалить неиспользуемые стандартные колонки и изменить порядок в котором они отображаются?