Wie benutze ich den Autorenavatar als Facebook post Vorschaubild, wenn ein einzelner Beitrag geteilt wird

Ich möchte den Avatar des Postautors verwenden, wenn dieser als Post-Vorschaubild für Facebook-Posts verfügbar ist. Wenn das nicht verfügbar ist, wäre ein vorhandenes Bild und dann ein Standardbild als Fallback. Gibt es ein Plugin oder eine function, die dies erreichen können?

Das SEO-Plugin von Yoast und viele andere können ein Standardbild einfügen, aber ich konnte kein Bild finden, das das Bild vom Avatar des Autors abrufen kann.

* Hinweis, ich verwende auch einfache lokale Avatare für Benutzer, die keine Avatare mit ihrer E-Mail haben

Solutions Collecting From Web of "Wie benutze ich den Autorenavatar als Facebook post Vorschaubild, wenn ein einzelner Beitrag geteilt wird"

Aus Ihren Kommentaren scheint es, Sie möchten die Postvorschau auf Facebook ersetzen. Dies könnte schwierig sein, weil Sie versuchen, das Verhalten einer anderen Webseite zu ändern. Mit dem Opengraph-Protokoll kann es gemacht werden.

add_action( 'wp_head', 'get_facebook_meta_tags', 10, 0 ); function get_facebook_meta_tags() { global $post; // bail if the post is not in single view if ( ! is_single() ) return; // get the url from post authors avatar (if available) or the url of post thumbnail // bails if no image was found $img_url = set_facebook_preview_image(); if ( empty( $img_url) ) return; // set description. use the first 97 chars from post excerpt (if available) or post content (alternativly) // add '...' to description $description = ( ! empty( $post->post_excerpt ) ) ? $post->post_excerpt : $post->post_content; if ( strlen( $description ) > 100 ) $description = substr( $description, 0, 97 ) . '...'; // create meta tags $format = '      '; printf( $format, esc_attr( $post->post_title ), esc_attr( get_permalink( $post->ID ) ), esc_attr( $img_url ), esc_attr( get_bloginfo( 'name', 'raw') ), esc_attr( $description ) ); } function set_facebook_preview_image() { global $post; if ( ! is_object( $post ) || empty( $post ) ) return false; // get the autor id and url from authors avatar (if available) // add a filter on get_avatar. this filter returns an empty string if a default avatar is returned add_filter( 'get_avatar', 'no_avatar_for_fb_preview_image', 0, 5 ); $author_id = isset( $post->post_author ) ? $post->post_author : ''; if ( empty( $author_id) ) return false; $author_avatar_html = get_avatar( $author_id ); // do not forget to remove the filter!! remove_filter( 'get_avatar', 'no_avatar_for_fb_preview_image', 0, 5 ); // grab avatar url from avatar html string if ( ! empty( $author_avatar_html ) ) { preg_match( '#(?< =src\=["|\']).+(?=["|\'](\s|\/\>))#Uuis', $author_avatar_html, $url ); $author_avatar_url = ( isset( $url[0] ) && ! empty( $url[0] ) ) ? $url[0] : ''; } // get the url fromj post thumbnail $post_thumb_url = wp_get_attachment_url( get_post_thumbnail_id( $post->ID ) ); // set url to author avatar url with fallback to post thumbnail url $img_url = ''; if ( ! empty( $author_avatar_url ) ) $img_url = $author_avatar_url; if ( empty( $img_url ) && ! empty( $post_thumb_url ) ) $img_url = $post_thumb_url; return $img_url; } function no_avatar_for_fb_preview_image( $avatar, $id_or_email, $size, $default, $alt ) { if ( ! empty( $default ) ) return ''; } 

Die erste function hook in wp_head und prüft, ob die Seite eine einzelne Ansicht ist. Wenn ja, versuchen Sie, eine Bild-URL (Post-Thumbnail oder Autor-Avatar-URL) zu holen. Wenn es eine URL abrufen kann, werden die erforderlichen Meta-Tags angezeigt.
Die zweite function erfasst die Avatar-URL und postet die Miniaturansicht. Es verwendet einen Filter für den Fall, dass ein Benutzer keinen Avatar hat. In diesem Fall wird eine leere Zeichenfolge zurückgegeben, und die URL der Postminiatur wird zurückgegeben.

Diese function extrahiert den Autor aus einem Facebook-Post-Link und holt die URL zu den Autoren facebook avatar

 function get_fb_avatarurl_from_fb_post( $fb_post_link ) { $avatar_template = 'http://graph.facebook.com/%username%/picture'; $user = ''; $avatar_url = false; $parsed_url = parse_url( $fb_post_link ); if ( isset( $parsed_url['path'] ) ) { $path = trim( $parsed_url['path'], '/' ); preg_match( '#^.+/#Uuis', $path, $user ); if ( ! empty( $user ) && isset( $user[0] ) ) $avatar_url = str_replace( '%username%', trim( $user[0], '/' ), $avatar_template ); } return $avatar_url; } 

Die function erwartet einen Link im Format https://www.facebook.com/the.facebook.post.author/posts/123456789123456

Um den Facebook-Avatar oder das Post-Thumbnail anzuzeigen, können Sie dieses Code-Snippet verwenden

 global $post; $avatar_img_url = get_fb_avatarurl_from_fb_post( [the facebook post url] ); $post_img_html = get_the_post_thumbnail( $post->ID, 'thumbnail' ); if ( empty( $post_img_html ) ) $post_img_html = ''; // modify the html to whatever you want if ( ! empty( $avatar_img_url ) ) $post_img_html = preg_replace( '#(?< =src\=["|\']).+(?=["|\'](\s|\/\>))#Uuis', $avatar_img_url, $post_img_html ); echo $post_img_html; 

Ich weiß nicht, woher du den Facebook-Post-Link bekommst, aber ich denke, du hast ihn schon überall hinbekommen. Das Code-Snippet versucht zuerst, die fb-Avatar-URL zu erhalten. Dann versuchen Sie, das Postminiaturbild zu erhalten. get_the_post_thumbnail() gibt Ihnen einen vollständigen HTML-Code wie Uploaded image your title here .
Wenn kein Post-Thumbnail verfügbar ist, wird eine HTML-Vorlage verwendet (Sie müssen sie bearbeiten). Wenn ein Post-Thumbnail verfügbar ist und eine fb-Avatar-URL, wird die Quelle des Bildes durch die fb-Avatar-URL ersetzt. Wenn eine Post-Miniaturansicht verfügbar ist, aber keine fb-Avatar-URL, wird die Post-Miniaturansicht angezeigt.

Wenn Sie auch das alt Attribut ändern möchten, können Sie die if statement erweitern

 if ( empty( $post_img_html ) ) $post_img_html = ''; if ( ! empty( $avatar_img_url ) ) { $fb_alt_attrb = 'The new text for alt attrb if a fb avatar is displayed'; $post_img_html = preg_replace( '#(?< =src\=["|\']).+(?=["|\'](\s|\/\>))#Uuis', $avatar_img_url, $post_img_html ); $post_img_html = preg_replace( '#(?< =alt\=["|\']).+(?=["|\'](\s|\/\>))#Uuis', $fb_alt_attrb, $post_img_html ); } 

Ich hoffe es hilft dir.

Bearbeiten Dies ändert das Post-Thumbnail / Featured-Bild mit dem Facebook-Avatar.