Wie wird der Benutzer angezeigt, der einen ausstehenden Post veröffentlicht hat?

Ich versuche, den Namen der Moderatoren (Benutzer mit der Rolle “Editor”) aufzulisten, die ausstehende Posts veröffentlichen. Ich habe ein Dashboard-Widget erstellt, das die neuesten 10 veröffentlichten Posts und den Autor anzeigt, aber ich habe Probleme, den Benutzer zu finden, der es veröffentlicht hat. Ich dachte, the_modified_author könnte es sein, aber ich bin mir nicht sicher, ob es eine bessere Möglichkeit gibt zu sagen, wer den Beitrag veröffentlicht hat? So oder so funktioniert meine Methode nicht. Hier ist mein Code bis jetzt:

 function dashboard_widget_function() { $args = array( 'post_status' => 'publish', 'numberposts' => '10', 'post_type' => 'post'); $recent_posts = wp_get_recent_posts( $args ); echo ''; foreach( $recent_posts as $recent ){ $post_author = get_user_by( 'id', $recent['post_author'] ); echo ''; echo ''; echo ''; } echo '
Post Title Author Moderated by
' . $recent["post_title"].''. $post_author->display_name .''.get_the_modified_author().'
'; }

Solutions Collecting From Web of "Wie wird der Benutzer angezeigt, der einen ausstehenden Post veröffentlicht hat?"

Der Grund dafür, dass get_the_modified_author() nicht funktioniert, liegt darin, dass es innerhalb der WordPress-Schleife verwendet wird. wp_get_recent_posts() richtet kein globales Post-Objekt ein. Hier ist ein vollständiges Beispiel, das auf Ihrem ursprünglichen Code basiert, der get_the_modified_author() durch einen einfachen Code ersetzt, um den Namen der letzten Person zu erhalten, die den Beitrag bearbeitet hat (was im Wesentlichen was get_the_modified_author() tut):

 /** * Add a widget to the dashboard. * * This function is hooked into the 'wp_dashboard_setup' action below. */ function example_add_dashboard_widgets() { wp_add_dashboard_widget( 'example_dashboard_widget', // Widget slug. 'Example Dashboard Widget', // Title. 'example_dashboard_widget_function' // Display function. ); } add_action( 'wp_dashboard_setup', 'example_add_dashboard_widgets' ); function example_dashboard_widget_function() { $items_to_show = 10; $counter = 0; $recent_posts = wp_get_recent_posts( [ 'post_status' => 'publish', 'numberposts' => '50', // More than we want, but tries to ensure we have enough items to display. 'post_type' => 'post' ] ); echo ''; foreach ( $recent_posts as $recent ) { $post_author = get_user_by( 'id', $recent['post_author'] ); $last_user_id = get_post_meta( $recent['ID'], '_edit_last', true ); $last_user = get_userdata( $last_user_id ); // Bail out of the loop if we've shown enough items. if ( $counter >= $items_to_show ) { break; } // Skip display of items where the author is the same as the moderator: if ( $post_author->display_name === $last_user->display_name ) { continue; } echo ''; echo ''; echo ''; $counter++; } echo '
Post Title Author Moderated by
' . $recent['post_title'].''. esc_html( $post_author->display_name ) .''. esc_html( $last_user->display_name ) .'
'; }

Bearbeiten basierend auf Feedback vom Kommentar: Dieser Code überspringt die Anzeige von Elementen mit $post_author->display_name === $last_user->display_name . Es ist jedoch nicht der effizienteste Code, da wir mehr Elemente als nötig abfragen. Dies geschieht, weil wir einige Elemente überspringen und versuchen (versuchen), dass mindestens 10 Elemente angezeigt werden ( $items_to_show = 10).

Wir könnten die ID des Benutzers, der zuletzt einen Beitrag veröffentlicht hat, als den Wert des _wpse_user_last_published Post- _wpse_user_last_published mit:

 add_action( 'transition_post_status', function( $new_status, $old_status, $post ) { if( $new_status !== $old_status && 'publish' === $new_status && 'post' === get_post_type( $post ) ) update_post_meta( $post->ID, '_wpse_user_last_published', get_current_user_id() ); }, 10, 3 ); 

Dann könnten Sie diese Informationen abrufen, wenn Sie Ihre Beiträge auflisten.

Für detailliertere und schnellere Suche ist es möglicherweise besser, eine benutzerdefinierte Protokolltabelle zu erstellen.