« D’un coup d’œil » (At a glance) est le remplaçant du widget « Aujourd’hui » sur le tableau de bord. Il y avait une méthode pour ajouter des CPT à ce widget, qui ne marche plus depuis la mise à jour. Tout le monde a déjà montré sa méthode pour palier ce petit désagrément, sauf moi… voici donc ma solution :p
***POUF***
EDIT 24/09/2014 :
Avec cette nouvelle version, plus besoin de prévoir le coup lorsque le CPT est créé en ajoutant du css (mon bout de code s’en charge).
010203040506070809101112131415161718192021222324252627282930313233343536
// "At a glance" items (dashboard widget): add the post types.
add_filter( 'dashboard_glance_items', 'sf_glance_post_types_items' );
function sf_glance_post_types_items( $items ) {
$post_types = get_post_types( array( 'public' => true, '_builtin' => false ), 'object' );
$post_types = apply_filters( 'sf_glance_post_types', $post_types );
if ( count( $post_types ) ) {
foreach ( $post_types as $post_type => $object ) {
$num_posts = wp_count_posts( $post_type );
if ( ! $num_posts || ! isset( $num_posts->publish ) ) {
continue;
}
$icon = ! empty( $object->menu_icon ) && strpos( $object->menu_icon, 'dashicons-' ) === 0 ? '<i class="sf-icon dashicons ' . $object->menu_icon . '"></i>' : '';
$class = $icon ? ' hide-icon' : '';
$text = sprintf( _n( '%1$s %2$s', '%1$s %3$s', $num_posts->publish ), number_format_i18n( $num_posts->publish ), $object->labels->singular_name, $object->labels->name );
if ( current_user_can( $object->cap->edit_posts ) ) {
$items[] = sprintf( '<a class="%1$s-count%2$s" href="edit.php?post_type=%1$s">%3$s%4$s</a>', $post_type, $class, $icon, $text );
}
else {
$items[] = sprintf( '<span class="%1$s-count%2$s">%3$s%4$s</span>', $post_type, $class, $icon, $text );
}
}
}
return $items;
}
add_action( 'admin_print_styles-index.php', 'sf_glance_post_types_style' );
function sf_glance_post_types_style() {
echo '<style>#dashboard_right_now li .hide-icon:before {display: none;} #dashboard_right_now li .sf-icon {float:left; margin: 0 5px 0 0; color:#888;}</style>' . "\n";
}
La différence avec la précédente version de ce code, c’est qu’on ne se sert plus du système mis en place par WordPress pour ajouter une icône devant chaque ligne du widget. Au contraire, on va la cacher et ajouter la notre dans une balise <i>
(pour éviter d’utiliser une balise <span>
à cause des règles css déjà en place).
See ya!
Commentaires
Commentaire de TweetPress de France @ TweetPress.fr.
Moi ça continue de me les casser quand je vois qu’on peut déclarer une dashicon pour l’UI CPT dans les menus et qu’elle n’est pas reprises logiquement pour le dashboard widget at glance : https://core.trac.wordpress.org/ticket/27414
Je suis tout seul mais bon, faut croire qu’on est obligé de rajouter des balises styles :|