it-swarm.com.de

Ändern des Seitenleisteninhalts des Administrators, um den Indikator für ausstehende Posts anzuzeigen

Ich habe versucht, eine ausstehende Anzahl für ausstehende Posts in der Admin-Seitenleiste anzuzeigen, z. B. die kleine Blase, die für ausstehende Kommentare angezeigt wird:

Comments pending bubble

Offtopic : Bin ich der einzige, der meint, dass dies Kernverhalten sein sollte? Wo soll ich diese Funktion vorschlagen?

Jedenfalls habe ich dieses Plugin gefunden, aber mir ist aufgefallen, dass es nicht immer funktioniert hat. Manchmal erscheint die Benachrichtigung auf Seiten oder anderen Elementen.

Der Code, der zum Hinzufügen der ausstehenden Anzahl verwendet wird, sieht ungefähr so ​​aus:

$menu[5][0] .= " <span class='update-plugins count-$pending_count'><span class='plugin-count'>" . number_format_i18n($pending_count) . '</span></span>';

Das Problem ist natürlich, dass die 5 dort fest codiert ist, aber wie kann ich sie aktualisieren, sodass sie immer auf Posts verweist?

Ich werde diese Änderung gerne in das Plugin übernehmen, wenn wir die Antwort kennen.

Vielen Dank!

4
Nacho

@ign

Ersetzen Sie die von Ihnen eingegebene Codezeile durch Folgendes:.

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;

..das sollte die Notwendigkeit vermeiden, den spezifischen Schlüssel zu kennen .. (lassen Sie mich wissen, wenn irgendwelche Probleme) ..

Hoffentlich hilft das.. :)

4
t31os

im Anschluss an die Antwort von t31os finden Sie hier den vollständigen Code (der den Inhalt des erwähnten Plugins mit t31os 'Fix kombiniert) sowie Änderungen, die auch die Bearbeitung benutzerdefinierter Beitragstypen betreffen:

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;
}

platziere dies in functions.php, das Plugin wird nicht benötigt.

7
somatic

Ich habe eine kleine Änderung am Beitrag von somatic vorgenommen, die mehrere Beitragstypen zulässt:

// 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');
2
Davs Howard