Zeigen Sie E-Mails von Nutzern an, die bereits mindestens einmal gepostet haben

Ich muss auf einer Seite die Liste der E-Mails der Benutzer anzeigen, die bereits einmal auf meiner Website gepostet haben.

Ich habe diesen Codeschnipsel:

global $wpdb; $min_posts = 1; $author_ids = $wpdb->get_col("SELECT `post_author` FROM (SELECT `post_author`, COUNT(*) AS `count` FROM {$wpdb->posts} WHERE `post_status`='publish' GROUP BY `post_author`) AS `stats` WHERE `count` >= {$min_posts} ORDER BY `count` DESC;"); 

Aber ich habe zwei Probleme: Wie kann ich wählen, um es auf einer bestimmten Seite anzuzeigen (ich füge normalerweise snippets zu functions.php hinzu) und wie kann ich die email anstelle der iDs erhalten?

Wahrscheinlich muss ich get_the_author_meta( 'user_email' ) aber ich weiß nicht, wie ich es hier implementieren soll.

Danke für deine Zeit und Hilfe

Solutions Collecting From Web of "Zeigen Sie E-Mails von Nutzern an, die bereits mindestens einmal gepostet haben"

Sie können folgenden Code in Ihre functions.php-Datei [myblogwriters min_posts="1"] irgendwo auf der Seite / im Post-Inhalt verwenden und auch den min_posts-Wert ändern 🙂

 function show_min_one_post_writers($atts){ global $wpdb; $attrs = shortcode_atts( array( 'min_posts' => '' ), $atts ); $min_posts = $attrs['min_posts']; $authors = $wpdb->get_col("SELECT `post_author` FROM (SELECT `post_author`, COUNT(*) AS `count` FROM {$wpdb->posts} WHERE `post_status`='publish' GROUP BY `post_author`) AS `stats` WHERE `count` >= {$min_posts} ORDER BY `count` DESC;"); $my_blog_writers = ""; if ( empty ($authors) ) { return "

No one has contirbuted any post yet!

"; } else { foreach ($authors as $author_id) { $my_writer = get_userdata($author_id); $my_blog_writers .= "

".$my_writer->first_name ." ".$my_writer->last_name ." : ". $my_writer->user_email."

"; } return $my_blog_writers; } } add_shortcode( 'myblogwriters', 'show_min_one_post_writers' );

Wenn Ihre Abfrage korrekt ist und die Liste der user_id , können Sie das Folgende ausführen

 foreach($user_id_array as $user_id){ echo get_the_author_meta( 'user_email', $user_id ); echo "
";//to print in new line for each user mail }

Sie können das oben in der Seitenvorlage oder in einem Vorlagen-Hook verwenden. Zum Beispiel können Sie dies in wp_head , wp_footer etc wp_footer

Lassen Sie uns dies in einer leeren Seite tun. Nehmen wir an, die page_id ist 8 dann wird der folgende Filter den Trick machen

 function print_selected_umail($content){ //check if we are in required page(8), so that we can add the selected user mail if(is_page(8)){ //queried result foreach($user_id_array as $user_id){ $content .= get_the_author_meta( 'user_email', $user_id ); $content .= "
";//to print in new line for each user mail } } return $content; } add_filter('the_content','print_selected_umail');