web-dev-qa-db-ja.com

Wordpress Postのヘッダーに画像のURLが含まれています

投稿のおすすめ画像のURLをヘッダーに追加します。 FacebookユーザーがWordpressページを共有するとき、ヘッダーのこのコード:

rel="image_src"属性はfacebookが探しているものです。

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

共有の特定の画像を返します。しかし、投稿のおすすめ画像のURLを追加する方法がわかりません...できますか。

私はこれを試しました:

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

しかし、それは私にParse error: syntax error, unexpected ';'エラーを与えました。

1
Amanda Duke

これに答えて本当の問題を指摘するには:

<head> HTMLタグは実際のループよりはるか前にくるので、global $post以外のものが必要になります。

get_queried_object();
get_queried_object_id();

プラグイン

コードはテストされ動作します。

テーマを切り替えるときにこの機能を維持したい場合があるので、プラグインにまとめることをお勧めします。

そのため、実際のプラグインは次のようなものになります。

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

2行目に欠けている閉じ括弧がありませんでした。 $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

また、インデックスページやアーカイブページでの不要な出力を避けるために、単一の投稿またはページのチェックを追加することもできます。例:

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