Пользовательский столбец Мета-администратора Таксономии


Я добавил пользовательскую таксономию - shop_departments, которая является иерархической. Затем я добавил мета-поле в эту новую таксономию - term_meta[front_page] - и все это работает нормально.

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

Я не могу понять, как добавить столбец на эту страницу. Я хочу сделать что-то вроде:

// Register the column
function front_page_column_register( $columns ) {
$columns['front-page'] = __( 'Front Page', 'my-plugin' );

return $columns;
}
add_filter( 'manage_edit-shopp_department_columns', 'front_page_column_register' );

Любой помощь была бы отличной, во всех статьях, которые я нашел, говорится о добавлении его на страницу редактирования сообщений или пользовательских типов сообщений, а не на саму страницу таксономии!

Author: Ralphonz, 2013-12-19

1 answers

Мне удалось это выяснить. Похоже, что фильтры работают только в том случае, если они завернуты в действие "admin_init". Мой окончательный код для добавления столбца администратора для пользовательской таксономии meta "front_page" в пользовательскую таксономию "shopp_department" в моих темах" functions.php

// Register the column
function department_add_dynamic_hooks() {
$taxonomy = 'shopp_department';
add_filter( 'manage_' . $taxonomy . '_custom_column', 'department_taxonomy_rows',15, 3 );
add_filter( 'manage_edit-' . $taxonomy . '_columns',  'department_taxonomy_columns' );
}
add_action( 'admin_init', 'department_add_dynamic_hooks' );

function department_taxonomy_columns( $original_columns ) {
$new_columns = $original_columns;
array_splice( $new_columns, 1 );
$new_columns['frontpage'] = esc_html__( 'Front Page', 'taxonomy-images' );
return array_merge( $new_columns, $original_columns );
}

function department_taxonomy_rows( $row, $column_name, $term_id ) {
$t_id = $term_id;
$meta = get_option( "taxonomy_$t_id" );
if ( 'frontpage' === $column_name ) {
    if ($meta == true) {
        return $row . 'Yes';
    } else {
        return $row . 'No';
    }   
}

Надеюсь, это кому-то поможет.

 1
Author: Ralphonz, 2013-12-20 11:21:02