Если вы используете пользовательские таксономии, то для управления постами удобно создать инструменты, с помощью которых можно отфильтровать посты по этим таксономиям. Это можно сделать, воспользовавшись кодом из поста Создание фильтра пользовательской таксономии в списке постов административной части 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>';
}
}
}
Пользовательские таксономии автоматически отображаются в виде отдельных колонок, отображение которых можно регулировать в закладке Настройка экрана.









Как можно отредактировать ширину колонки, удалить неиспользуемые стандартные колонки и изменить порядок в котором они отображаются?