web-dev-qa-db-fra.com

Wordpress Post en vedette l'URL de l'image dans l'en-tête

Je souhaite ajouter l'URL de l'image sélectionnée d'une publication à l'en-tête. Lorsqu'un utilisateur Facebook partage une page Wordpress, ce code dans l'en-tête:

L'attribut rel="image_src" est ce que recherche facebook.

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

Renverra une image spécifique pour le partage. Cependant, je ne peux pas comprendre comment ajouter l'URL de l'image sélectionnée de la publication ... Pouvez-vous?

J'ai essayé ceci:

<?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; ?>

Mais cela m'a donné une erreur Parse error: syntax error, unexpected ';'.

1
Amanda Duke

Pour répondre à cette question et indiquer le problème réel :

Comme la balise HTML <head> arrive bien avant la boucle réelle, vous aurez besoin de quelque chose d'autre que la global $post.

get_queried_object();
get_queried_object_id();

Le plugin

Le code est testé et fonctionne.

Comme vous souhaitez peut-être conserver cette fonctionnalité lors du changement de thème, je vous suggérerais de l'envelopper dans un plugin.

Donc, le plugin réel devrait être quelque chose autour des lignes suivantes:

<?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

il manquait un crochet de fermeture dans la deuxième ligne; et vous devez référencer le premier élément de tableau de $image:

<?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

vous pouvez également ajouter une coche pour un article ou une page afin d'éviter toute sortie indésirable dans les pages d'index ou d'archive; Exemple:

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