投稿のおすすめ画像の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 ';'
エラーを与えました。
これに答えて本当の問題を指摘するには:
<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' );
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() ): ?>