Отображение колонок пользовательских таксономий в административной части WordPress

Отображение колонок пользовательских таксономий в административной части WordPress | n-wp.ru Настройки
Код, автоматически добавляющий в список постов в административной части блога колонки с названиями пользовательских таксономий. Их отображение можно включить или отключить в параметрах закладки Настройка экрана.

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

Отображение колонок пользовательских таксономий в административной части WordPress

Пользовательские таксономии автоматически отображаются в виде отдельных колонок, отображение которых можно регулировать в закладке Настройка экрана.

tiaurus

Автор n-wp.ru — блога о WordPress для новичков.

Оцените автора
Добавить комментарий

  1. Ajajaajaja

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

    Ответить