Добавление категории в столбец админ-панели для произвольного типа записи

29 сент. 2013 г., 19:35:38
Просмотры: 28.2K
Голосов: 15

Я создал произвольный тип записи (custom post type) под названием article, но информация на экране админ-панели довольно скудная. Мне удалось добавить миниатюру записи, используя http://codex.wordpress.org/Plugin_API/Action_Reference/manage_posts_custom_column из туториала.

Однако я хотел бы получить обзор категорий и подкатегорий, которые были назначены этим записям на странице администратора, т.е. добавить столбец для этой части?

Вот код, который я использовал для регистрации таксономии в коде произвольного типа записи

1
Комментарии

Вы можете использовать плагин, например Codepress Admin Columns

fregante fregante
26 мар. 2014 г. 15:31:58
Все ответы на вопрос 3
2
24

Функция register_taxonomy имеет параметр show_admin_column, который отвечает за добавление колонки. Вы пробовали его использовать?

Например:

register_taxonomy(
    'my_tax, 
    'post_type', 
    array(
        'label'             => 'Моя Таксономия',
        'show_admin_column' => true,
        )
);
8 янв. 2015 г. 07:21:29
Комментарии

Пожалуйста, добавьте код и объясните, как его использование отвечает на вопрос. Если вы просто хотите что-то спросить у автора вопроса, используйте комментарии.

cybmeta cybmeta
21 дек. 2016 г. 17:00:32

2020 год, а ответ всё ещё работает. Спасибо за помощь. Голосую за ваш ответ.

user9437856 user9437856
23 сент. 2020 г. 22:38:16
0

После некоторых поисков я нашел решение, используя фильтр manage_edit-${post_type}_columns и действие manage_${post_type}_posts_custom_column.

Колонки создаются с помощью фильтра, а затем заполняются с помощью действия. Я предполагаю, что дополнительные колонки можно легко добавить и заполнить, используя идеи из этой ссылки http://justintadlock.com/archives/2011/06/27/custom-columns-for-custom-post-types

add_filter('manage_edit-article_columns', 'my_columns');
function my_columns($columns) {
    $columns['article_category'] = 'Категория';
return $columns;
}

add_action( 'manage_article_posts_custom_column', 'my_manage_article_columns', 10, 2 );

function my_manage_article_columns( $column, $post_id ) {
global $post;

switch( $column ) {

    /* Если отображается колонка 'article_category'. */
    case 'article_category' :

        /* Получаем категории для записи. */
        $terms = get_the_terms( $post_id, 'article_category' );

        /* Если категории найдены. */
        if ( !empty( $terms ) ) {

            $out = array();

            /* Перебираем каждую категорию, добавляя ссылку на страницу редактирования записей для конкретной категории. */
            foreach ( $terms as $term ) {
                $out[] = sprintf( '<a href="%s">%s</a>',
                    esc_url( add_query_arg( array( 'post_type' => $post->post_type, 'article_category' => $term->slug ), 'edit.php' ) ),
                    esc_html( sanitize_term_field( 'name', $term->name, $term->term_id, 'article_category', 'display' ) )
                );
            }

            /* Объединяем категории, разделяя их запятой. */
            echo join( ', ', $out );
        }

        /* Если категории не найдены, выводим сообщение по умолчанию. */
        else {
            _e( 'Нет статей' );
        }

        break;

    /* Просто выходим из switch для всего остального. */
    default :
        break;
}
}
1 окт. 2013 г. 02:17:51
1

Почти такой же вопрос: мне нужен дополнительный столбец "категория" в админке. "категория" — это таксономия, созданная с помощью Divi Machine. Слаг таксономии — art_category. В файле functions.php дочерней темы я смог отобразить поля ACF, даже сделал их сортируемыми, но это поля ACF. Столбец "Категория" отображается, однако в нем нет значений.

Ответ должен быть где-то здесь:

    if ( 'artcategory' === $column ) {
    $artcategory = get_post_meta( $post_id, 'art_category', true );

    if ( ! $artcategory ) {
      _e( 'н/д' ); // н/д - не задано
    } else {
      echo $artcategory;
    }
  }


Что я делаю не так.....
16 июн. 2022 г. 12:20:27
Комментарии

Это не совсем отвечает на вопрос. Если у вас другой вопрос, вы можете задать его, нажав Задать вопрос. Чтобы получать уведомления о новых ответах на этот вопрос, вы можете отслеживать этот вопрос. Как только у вас будет достаточно репутации, вы также сможете назначить награду, чтобы привлечь больше внимания к этому вопросу. - Из обзора

vancoder vancoder
17 июн. 2022 г. 01:31:47