Fügen Sie eine update-artige Benachrichtigungsblase in mehrere CPT-Menüs für ausstehende Elemente ein

Ähnlich wie die Menüeinträge für Plugins oder Kommentare diese Zahlenbenachrichtigungen in einer Blase für Updates bzw. nicht moderierte Kommentare enthalten, möchte ich diese Blase verwenden, um die Anzahl der CPTs anzuzeigen, die den Status “Ausstehende Überprüfung” haben. Wie man das macht?

Ich habe diesen Thread gefunden , bin mir aber nicht ganz sicher, wo ich von dort aus hingehen soll.

Das wäre nett zu haben; Ich benötige diese function auf einer Website, die nutzergenerierten Inhalt verwendet (benutzerdefinierte Beitragstypen). Immer wenn Benutzer einen neuen CPT einreichen, wird der Status auf “Ausstehende Überprüfung” gesetzt, und ich möchte, dass die Website-Administratoren schnell einen Blick auf das Menü casting, um zu sehen, wie viele Elemente ihre Aufmerksamkeit benötigen.

EDIT: Ich habe jetzt diesen Code:

// buuble notifications for custom posts with status pending add_action( 'admin_menu', 'add_pending_bubble' ); function add_pending_bubble() { global $menu; $custom_post_count = wp_count_posts('custom-post-name'); $custom_post_pending_count = $custom_post_count->pending; if ( $custom_post_pending_count ) { foreach ( $menu as $key => $value ) { if ( $menu[$key][2] == 'edit.php?post_type=custom-post-name' ) { $menu[$key][0] .= ' ' . $custom_post_pending_count . ''; return; } } } } 

… was funktioniert, wenn auch ein wenig inkonsequent. Manchmal wird angezeigt, manchmal nicht. Wenn ich mehrere CPTs habe, wie kann ich diesen Code dann für jeden einzelnen Menüpunkt dieser CPTs anwenden? Der obige Code funktioniert nur mit einem CPT.

Solutions Collecting From Web of "Fügen Sie eine update-artige Benachrichtigungsblase in mehrere CPT-Menüs für ausstehende Elemente ein"

Ich habe das gemacht, indem ich durch eine Post-Typ-Liste iterierte und den richtigen $menu Schlüssel für den Post-Typ unter Verwendung einer sekundären function ausfindig machte (anstatt manuell durch das $menu Objekt zu iterieren).

ausstehende Beiträge Blasen

functionsreferenz: get_post_types und wp_count_posts .

 add_action( 'admin_menu', 'pending_posts_bubble_wpse_89028', 999 ); function pending_posts_bubble_wpse_89028() { global $menu; // Get all post types and remove Attachments from the list // Add '_builtin' => false to exclude Posts and Pages $args = array( 'public' => true ); $post_types = get_post_types( $args ); unset( $post_types['attachment'] ); foreach( $post_types as $pt ) { // Count posts $cpt_count = wp_count_posts( $pt ); if ( $cpt_count->pending ) { // Menu link suffix, Post is different from the rest $suffix = ( 'post' == $pt ) ? '' : "?post_type=$pt"; // Locate the key of $key = recursive_array_search_php_91365( "edit.php$suffix", $menu ); // Not found, just in case if( !$key ) return; // Modify menu item $menu[$key][0] .= sprintf( '%1$s', $cpt_count->pending ); } } } // http://www.php.net/manual/en/function.array-search.php#91365 function recursive_array_search_php_91365( $needle, $haystack ) { foreach( $haystack as $key => $value ) { $current_key = $key; if( $needle === $value OR ( is_array( $value ) && recursive_array_search_php_91365( $needle, $value ) !== false ) ) { return $current_key; } } return false; }