当帖子中的图片没有出现时,如何为Facebook分享生成“og:Image”元数据?

时间:2016-03-29 作者:akopacsi

我的网站标题中有一段代码。php,可以为FB共享生成og:图像元数据。当给定的帖子有一个特色图片时,它可以完美地工作。

<?php $fb_image = wp_get_attachment_image_src(get_post_thumbnail_id( get_the_ID() ), \'480\'); ?>
<?php if ($fb_image) : ?>
  <meta property="og:image" content="<?php echo $fb_image[0]; ?>" />
<?php endif; ?>
如果您能告诉我如何修改(或替换)此代码以获得og:image meta标记,我将不胜感激,即使帖子有1张或多张照片,但没有一张被设置为特色照片。

1 个回复
最合适的回答,由SO网友:engelen 整理而成

如前所述,如果OG图像标签丢失,Facebook会自动检测图像。但是,在某些情况下,它可能会检测到其他图像(例如,不是来自您的帖子,而是来自其他内容)。

在这种情况下,获取帖子附带的所有图像的列表并使用您喜欢的图像,或者如您所建议的,使用第一个图像可能会很有用。下面的示例使用get_posts, 然后检索关联的缩略图,并显示图像URL。您可以使用存储在中的图像URL$thumbnail[0], 以及其宽度和高度$thumbnail[1]$thumbnail[2], 分别地

$images = get_posts( array(
    \'post_parent\'       => get_the_ID(),
    \'post_type\'         => \'attachment\',
    \'numberposts\'       => 1, // Single attachment
    \'post_status\'       => null,
    \'post_mime_type\'    => \'image\', // Only images
    \'orderby\'           => \'post_date\',
    \'order\'             => \'ASC\'
) );

if ( ! empty( $images ) ) {
    $thumbnail = wp_get_attachment_image_src( $images[0]->ID, \'thumbnail\' );
    echo $thumbnail[0];
}
请记住,此代码不会获取文章本身中的第一个图像,而是获取文章的第一个附件,即图像。在大多数情况下,这两者是相同的(如果你没有将图像附加到你的帖子中,而不是插入到帖子内容中,那么它们是相同的)。