如何获得帖子附件的完整绝对URL?

时间:2017-06-20 作者:Carlo

我试图手动填充打开的图形标记,但在设置og:image 标签

在单个贴子页面中,我将其设置为:

<?php
$thumbnailSrc = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), \'medium\');
$image        = esc_attr($thumbnailSrc[0]);
?>
<meta property="og:image" content="<?php echo $image ?>">
结果是:

<meta property="og:image" content="/wp-content/uploads/image.jpg">
在Open Graph调试器上,我发现以下错误:

Object at URL \'http://website.com\' of type \'article\' is invalid because the given value \'/wp-content/uploads/image.jpg\' for property \'og:image:url\' could not be parsed as type \'url\'.
如何获取附件,使url为:http://website.com/wp-content/uploads/image.jpg ?

3 个回复
SO网友:Bassscape

esc_attr() 在上可能不需要url 检索人wp_get_attachment_image_src.

我提到了code example from the WordPress Codex page on wp_get_attachment_image_src 并改编了以下适用于我的代码。

global $post;
$thumbnailSrc = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), \'medium\');
if ( $thumbnailSrc ) :
  echo \'<meta property="og:image" content="\'.$thumbnailSrc[0].\'">\';
endif;
编辑:由于您在WordPress循环之外使用$post对象,因此需要声明global $post; 使用前$post->ID. 我已经将其添加到上面的代码示例中。

SO网友:Bassscape

你可以使用has_post_thumbnail()get_the_post_thumbnail_url() 获取帖子功能图像的绝对url。

根据法典has_post_thumbnail() 将检查帖子是否附有图像get_the_post_thumbnail_url() 将返回帖子缩略图URL。

我已经测试了以下代码:

global $post;
if ( has_post_thumbnail($post->ID) ) {
  echo \'<meta property="og:image" content="\'.get_the_post_thumbnail_url($post->ID).\'">\';
}
如前一条评论所述,您正在WordPress循环开始之前使用$post对象,需要声明global $post; 在使用之前$post->ID.

SO网友:Den Isahac

访问外部的当前post对象The Loop, 您需要声明$post 全局变量。

<?php global $post; ?>
<meta property="og:image" 
    content="<?php echo wp_get_attachment_url(get_post_thumbnail_id(($post->ID)); ?>">

结束