135  39
Trier les Post Types dans les colonnes admin WordPress

Dans ce tutoriel, nous allons voir comment trier dans notre admin WordPress, les résultats de notre post type, comme par exemple les trier avec une meta key du post type par odre numérique.

Exemple, vous souhaitez trier le post type emplois et de les trier par l’ID de l’emploi du plus grand au plus petit.
Dans un premier temps nous allons construire nos colonnes désirés sur notre tableau du post type emplois.

Construisons notre colonne id-emploi. Il faut pour que ce soit considérer dans le post type, changer emplois par le nom de votre Post Type.

1
2
3
4
5
6
7
//////////////////////////////////// Admin columns Informations Post Type /////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
add_filter( 'manage_emplois_posts_columns', 'themespress_custom_mycpt_columns' );
function themespress_custom_mycpt_columns( $columns ) {
  $columns['id-emploi'] = __( 'Id de l'emploi', 'themespress' );
  return $columns;
}

On n’affiche nos résultats dans la colonne, en faisant notre série d’instructions, si on souhaite ajouter plusieurs colonnes.

1
2
3
4
5
6
7
8
9
10
11
add_filter( 'manage_emplois_posts_columns', 'themespress_custom_edit_mycpt_columns' );
function themespress_custom_edit_mycpt_columns( $columns ) {
//////////////////////////////////// Admin columns Informations Post Type /////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
  switch ( $column ) {
    case 'id-emploi' :
	// On appelle notre meta key
        echo get_post_meta( $post_id, 'id-emploi', true );
	break;
    }
}

On fait notre parse_query qui va nous permettre de trier nos emplois par ID du plus grand au plus petit.
Nous donnons la condition que si on n’est pas dans l’admin, return.

1
2
3
4
5
6
7
8
9
10
11
12
13
add_filter( 'parse_query', 'themespress_custom_post_sort' );
function themespress_custom_post_sort($query) {
 
    if ( ! is_admin() )
        return $query;
 
    global $current_screen;
    if ( isset( $current_screen ) && 'emplois' === $current_screen->post_type ) {
        $query->query_vars['orderby']  = 'meta_value';
        $query->query_vars['meta_key'] = 'id-emploi';
        $query->query_vars['order']    = 'DESC';
    }
}

Leave a Reply