Modifier le contenu de la barre latérale d'administration pour afficher l'indicateur de messages en attente
Question
J'ai essayé d'obtenir un compte dans l'attente d'apparaître dans la barre latérale d'administration, pour les messages en attente, comme la petite bulle qui apparaît pour des commentaires en attente:
Offtopic : Suis-je le seul qui pense que cela devrait être le comportement de base? Où dois-je suggérer cette fonction?
Quoi qu'il en soit, j'ai trouvé ce plugin , mais je l'ai remarqué didn « t toujours travaillé. Parfois, la notification apparaît sur les pages ou un autre élément.
Le code qu'il utilise pour ajouter le compte dans l'attente va quelque chose comme ceci:
$menu[5][0] .= " <span class='update-plugins count-$pending_count'><span class='plugin-count'>" . number_format_i18n($pending_count) . '</span></span>';
Alors, clairement le problème est le 5 codé en dur là-bas, mais comment puis-je mettre à jour il toujours des points à messages?
Je serai heureux de commettre ce changement au plug-in si nous connaissons la réponse.
Merci!
La solution
@ign
Remplacez la ligne de code affiché avec ce qui suit ..
foreach( $menu as $menu_key => $menu_data ) :
if( 'edit.php' != $menu_data[2] )
continue;
$menu[$menu_key][0] .= " <span class='update-plugins count-$pending_count'><span class='plugin-count'>" . number_format_i18n($pending_count) . '</span></span>';
endforeach;
.. que devrait éviter la nécessité de connaître la clé spécifique .. (laissez-moi savoir si des problèmes) ..
L'espoir qui aide ..:)
Autres conseils
comme à t31os suivi de la réponse, voici le code complet nécessaire (combinant le contenu du plug-in mentionné avec t31os de la solution), avec des modifications aux types de postes poignée personnalisés ainsi:
add_filter( 'add_menu_classes', 'show_pending_number');
function show_pending_number( $menu ) {
$type = "animals";
$status = "pending";
$num_posts = wp_count_posts( $type, 'readable' );
$pending_count = 0;
if ( !empty($num_posts->$status) )
$pending_count = $num_posts->$status;
// build string to match in $menu array
if ($type == 'post') {
$menu_str = 'edit.php';
} else {
$menu_str = 'edit.php?post_type=' . $type;
}
// loop through $menu items, find match, add indicator
foreach( $menu as $menu_key => $menu_data ) {
if( $menu_str != $menu_data[2] )
continue;
$menu[$menu_key][0] .= " <span class='update-plugins count-$pending_count'><span class='plugin-count'>" . number_format_i18n($pending_count) . '</span></span>';
}
return $menu;
}
placer dans functions.php, pas besoin du plug-in.
J'ai fait une légère modification au poste somatique qui permet plusieurs types de poste:
// Add pending numbers to post types on admin menu
function show_pending_number($menu) {
$types = array("post", "page", "custom-post-type");
$status = "pending";
foreach($types as $type) {
$num_posts = wp_count_posts($type, 'readable');
$pending_count = 0;
if (!empty($num_posts->$status)) $pending_count = $num_posts->$status;
if ($type == 'post') {
$menu_str = 'edit.php';
} else {
$menu_str = 'edit.php?post_type=' . $type;
}
foreach( $menu as $menu_key => $menu_data ) {
if( $menu_str != $menu_data[2] )
continue;
$menu[$menu_key][0] .= " <span class='update-plugins count-$pending_count'><span class='plugin-count'>" . number_format_i18n($pending_count) . '</span></span>';
}
}
return $menu;
}
add_filter('add_menu_classes', 'show_pending_number');