Cum să afișezi indicatorul postărilor în așteptare în bara laterală de administrare WordPress
Am încercat să fac să apară un indicator pentru numărul de postări în așteptare în bara laterală de administrare, similar cu bușonul care apare pentru comentariile în așteptare:
Offtopic: Sunt singurul care crede că acest lucru ar trebui să fie inclus în funcționalitatea de bază? Unde ar trebui să sugerez această caracteristică?
Oricum, am găsit acest plugin, dar am observat că nu funcționează întotdeauna. Uneori indicatorul apare la Pagini sau alte elemente.
Codul pe care îl folosește pentru a adăuga numărul de postări în așteptare arată cam așa:
$menu[5][0] .= " <span class='update-plugins count-$pending_count'><span class='plugin-count'>" . number_format_i18n($pending_count) . '</span></span>';
Deci, clar problema este numărul hardcodat 5 acolo, dar cum pot actualiza codul astfel încât să indice întotdeauna către Postări?
Voi fi bucuros să contribui cu această modificare la plugin dacă aflăm răspunsul.
Mulțumesc!

ca un follow-up la răspunsul lui t31os, iată codul complet necesar (combinând conținutul plugin-ului menționat cu corecția lui t31os), cu modificări pentru a gestiona și tipurile personalizate de postări:
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;
// construiește șirul pentru potrivire în array-ul $menu
if ($type == 'post') {
$menu_str = 'edit.php';
} else {
$menu_str = 'edit.php?post_type=' . $type;
}
// parcurge elementele $menu, găsește potrivirea, adaugă indicatorul
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;
}
plasați acest cod în functions.php, nu este nevoie de plugin.

Wow, mulțumesc. Deja am contactat creatorul plugin-ului pentru a comita acele modificări în cazul în care cineva are nevoie de acest comportament.
Deci, știe cineva de ce acest lucru nu funcționează așa în mod implicit?

Nici măcar nu am verificat plugin-ul, mulțumesc pentru urmărire. Codul pe care l-ai oferit constituie o funcție simplă și elegantă pe care alți utilizatori o pot copia acum dacă doresc să aibă această funcționalitate... treabă bună... ;)

Î: Funcția nu setează variabila $type, făcând astfel condiția if ($type == 'post') {
inutilă?

da, acest exemplu este puțin ciudat, deoarece l-am adaptat de la unul în care interoghez toate tipurile de postări din sistem și le parcurg prin funcție (aici a trebuit să declar doar variabilele dorite, astfel încât exemplul să funcționeze independent). Scopul condiției este de a construi URL-ul potrivit pentru tot ce nu este tipul de postare de bază...

@ign
Înlocuiește linia de cod pe care ai postat-o cu următoarea..
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;
..asta ar trebui să evite necesitatea de a cunoaște cheia specifică.. (spune-mi dacă apar probleme)..
Sper că te ajută.. :)

Am făcut o mică modificare la postarea somatic care permite afișarea pentru mai multe tipuri de postări:
// Adaugă numărul de postări în așteptare pentru tipuri de postări în meniul de administrare
function show_pending_number($menu) {
$types = array("post", "page", "custom-post-type"); // Tipurile de postări
$status = "pending"; // Starea postărilor
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'; // URL pentru postări
} else {
$menu_str = 'edit.php?post_type=' . $type; // URL pentru alte tipuri de postări
}
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'); // Aplică filtrul
