web-dev-qa-db-de.com

In Wordpress wird die URL des angezeigten Bilds in der Kopfzeile veröffentlicht

Ich möchte die URL des vorgestellten Bildes eines Beitrags in die Kopfzeile einfügen. Wenn ein Facebook-Benutzer eine Wordpress-Seite freigibt, wird der folgende Code in der Kopfzeile angezeigt:

Das rel="image_src"-Attribut ist das, wonach Facebook sucht.

<link rel="image_src" href="FEATUREDIMAGEURL">

Gibt ein bestimmtes Bild für die Freigabe zurück. Ich kann jedoch nicht herausfinden, wie ich die URL des vorgestellten Bildes des Posts hinzufügen kann.

Ich habe es versucht:

<?php if (has_post_thumbnail( $post->ID ) ): ?>
<?php $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ); ?>
<link rel="image_src" href="<?php echo $image; ?>">
<?php endif; ?>

Aber es gab mir einen Parse error: syntax error, unexpected ';' Fehler.

1
Amanda Duke

Um dies zu beantworten und auf das echte Problem hinzuweisen:

Da das HTML-Tag <head> weit vor der eigentlichen Schleife steht, benötigen Sie etwas anderes als den global $post.

get_queried_object();
get_queried_object_id();

Das Plugin

Der Code ist getestet und funktioniert.

Da Sie diese Funktionalität beim Themawechsel beibehalten möchten, sollten Sie sie in ein Plugin packen.

Das eigentliche Plugin sollte also ungefähr so ​​aussehen:

<?php
/** Plugin Name: (#70215) »kaiser« Post Thumbnail image for FB */
function wpse70215_fb_img()
{
    // Not on a single page or post? Stop here.
    if ( ! is_singular() )
        return;

    $post_ID = get_queried_object_id();

    // We got no thumbnail? Stop here.
    if ( ! has_post_thumbnail( $post_ID ) )
        return;

    // Get the Attachment ID
    $att_ID = get_post_thumbnail_id( $post_ID );

    // Get the Attachment
    $att    = wp_get_attachment_image_src( $att_ID );

    printf(
         '<link rel="image_src" href="%s">'
        ,array_shift( $att )
    );
}
add_action( 'wp_head', 'wpse70215_fb_img' );
4
kaiser

in der zweiten Zeile fehlte eine schließende Klammer; und Sie müssen auf das erste Array-Element von $image verweisen:

<?php if (has_post_thumbnail( $post->ID ) ): ?> 
<?php $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ) ); ?> 
<link rel="image_src" href="<?php echo $image[0]; ?>"> 
<?php endif; ?> 

http://codex.wordpress.org/Function_Reference/wp_get_attachment_image_src

möglicherweise möchten Sie auch eine Prüfung für einzelne Posts oder Seiten hinzufügen, um unerwünschte Ausgaben in Index- oder Archivseiten zu vermeiden. Beispiel:

<?php if ( has_post_thumbnail( $post->ID ) && is_singular() ): ?>
2
Michael