web-dev-qa-db-fra.com

Colonne Meta Admin de taxonomie personnalisée

J'ai ajouté une taxonomie personnalisée - shop_departments qui est hiérarchique. J'ai ensuite ajouté un méta-champ à cette nouvelle taxonomie - term_meta [front_page] - qui fonctionne très bien.

Toutefois, sur l'écran de gestion de la taxonomie, je souhaite une colonne pour ces métadonnées afin que l'utilisateur puisse voir en un coup d'œil les départements affectés à la page d'accueil.

Je n'arrive pas à comprendre comment ajouter une colonne à cette page. Je veux faire quelque chose comme:

// 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' );

Toute aide serait formidable, tous les articles que j'ai trouvés parlent de l'ajouter à une page d'édition post-type ou personnalisée, pas à la page de taxonomie elle-même!

2
Ralphonz

J'ai réussi à comprendre. On dirait que les filtres ne fonctionnent que lorsqu'ils sont encapsulés dans une action 'admin_init'. Mon dernier code pour ajouter une colonne admin pour la méta de taxonomie personnalisée 'front_page' à la taxonomie personnalisée 'shopp_department' dans le thème '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';
    }   
}

J'espère que ça aide quelqu'un.

1
Ralphonz