web-dev-qa-db-fra.com

Taxonomies n'apparaissant pas dans les colonnes du tableau de bord

J'ai des difficultés à faire en sorte que les taxonomies apparaissent dans les colonnes de publication de mon tableau de bord, les fonctions personnalisées apparaissent correctement, mais pas les taxonomies. Quelqu'un voit où je me trompe? Voici une capture d'écran montrant le problème: http://i.imgur.com/GiMSfhF.png

// Add filters for the Games Database in the control panel
add_filter( 'manage_edit-games_database_columns', 'my_columns' );
function my_columns( $columns ) {
$columns['games_database_platform'] = 'Platform'; // Taxonomy
$columns['games_database_genre'] = 'Genre'; // Taxonomy
$columns['games_database_publisher'] = 'Publisher'; // Custom Function
$columns['games_database_developer'] = 'Developer'; // Custom Function
$columns['games_database_rating'] = 'Review Score'; // Custom Function
unset( $columns['comments'] );
return $columns;
}
add_action( 'manage_posts_custom_column', 'populate_columns' );
function populate_columns( $column ) {
if ( 'games_database_publisher' == $column ) {
    $game_publisher = esc_html( get_post_meta( get_the_ID(), 'game_publisher', true )     );
    echo $game_publisher;
}
elseif ( 'games_database_developer' == $column ) {
    $game_developer = get_post_meta( get_the_ID(), 'game_developer', true );
    echo $game_developer;
}
elseif ( 'games_database_rating' == $column ) {
    $game_rating = get_post_meta( get_the_ID(), 'game_rating', true );
    echo $game_rating . '%';
}
elseif ( 'games_database_platform' == $column ) {
    $game_platform = get_post_meta( get_the_ID(), 'games_database_game_platform', true );
    echo $game_platform;
}
elseif ( 'games_database_rating' == $column ) {
    $game_rating = get_post_meta( get_the_ID(), 'game_rating', true );
    echo $game_rating . '%';
}
}
1
Dave Burns

Appelez register_taxonomy() avec 'show_admin_column' => TRUE et WordPress créera vos colonnes automatiquement. Ce paramètre a été ajouté dans la version 3.5 . Vous n’avez plus besoin d’un filtre personnalisé.

J'ai écrit un petit plugin pour illustrer ce cas: t5-taxonomy-location .

C'est le code d'enregistrement:

protected function register_taxonomy()
{
    $this->set_labels();

    $args = array (
        'labels'            => $this->labels,
        'label'             => $this->labels['singular_name'],
        'public'            => TRUE,
        'show_in_nav_menus' => TRUE,
        'show_ui'           => TRUE,
        'show_tagcloud'     => TRUE,
        'rewrite'           => array (
            'slug'       => _x( 'location', 'slug', 'plugin_t5_tax_location' ),
            'with_front' => apply_filters( 't5_tax_location_slug_front', FALSE )
        ),
        'query_var'         => 'location',
        'hierarchical'      => TRUE,
        // New in WordPress 3.5
        // see http://core.trac.wordpress.org/ticket/21240
        'show_admin_column' => TRUE
    );

    $tax_post_types = apply_filters(
        't5_tax_location_post_types',
        array( 'post', 'page', 'attachment' )
    );

    register_taxonomy( $this->taxonomy, $tax_post_types, $args );
}
2
fuxia