php - 当图像 URL 由 php 动态生成时,og:图像被忽略
问题描述
我有一个网页(在 Wordpress 下),我想根据查询字符串参数在 Facebook 帖子中显示不同的预览图像。
为此,在我的<head>
标签内,我有:
<?php
$image = wp_get_attachment_image_src( get_post_thumbnail_id( $_GET['lbcid'] ), 'single-post-thumbnail' );
?>
<meta property="og:url" content="http://uat1.one-pager.sugarloafculinary.com/?lbcid=6957" />
<meta property="og:type" content="article" />
<meta property="og:title" content="Test Title" />
<meta property="og:description" content="Description Here" />
<meta property="og:image" content="<?php echo $image[0] ?>" />
$image[0]
输出一个有效的 URL,但当PHP 动态输出属性的值时,Facebook 似乎<meta>
完全忽略了该标签。content
相反,它会选择页面上符合要求的第一张图片。我已经进入 FB 调试工具并重新抓取 - 这没有效果(在这个问题上)。
当我硬编码content
属性的值时,它会按预期显示。前任:
<meta property="og:image" content="http://uat1.one-pager.sugarloafculinary.com/wp-content/uploads/2018/07/blog_bulgar-pudding.jpg" />
您可以在http://uat1.one-pager.sugarloafculinary.com/?lbcid=6957看到这一点。如果您查看源代码,您会看到该<meta>
标签中的图片有一个有效(动态生成的)URL,但是如果您在FB Sharing Debugger中测试该页面,您会看到指定的图片没有显示.
任何人都可以在我的代码中看到任何错误吗?有什么技巧可以让它工作吗?它可能是一个 Wordpress 的东西吗?(我没有在 WP 之外测试过)。
编辑:
见下面接受的答案。上面 URL 处的代码已被修改以解决问题,因此它们将不再说明问题。简单的解决方案:似乎 FB 刮板在 og:image 的第一个实例处停止,其中我的是第二个,因此被忽略了。
解决方案
使用 facebook 调试器https://developers.facebook.com/tools/debug似乎图像已成功生成并且 facebook 可以读取它
<meta property="og:image" content="http://uat1.one-pager.sugarloafculinary.com/wp-content/uploads/2018/06/logo_horz1-e1530285280453.png" />
<!--this image is less than 200*200px -->
调试器告诉的错误是图像小于 200px * 200px 如果你使用更大的图像来解决问题
编辑:在我修改了代码后,我发现
og:image
代码上生成了很多FB 取第一个并忽略其余的。首先
og:image
很小,所以会发生错误修改您的插件和主题以消除不需要的
og:image
推荐阅读
- python - 为分散数据选择python中的特定列
- node.js - 环回存储组件 afterRemote/beforeRemote 钩子 destroyContainer 未从另一个模型调用
- ruby-on-rails - 无法在 Heroku 上部署 rails 动态路由器
- python - 在终端上运行 Python 脚本,然后继续使用终端
- java - ExoPlayer 2.8.2 更改 - TrackSelectionHelper 和选择对话框
- windows - 子进程有时会返回空
- ios - 快速解码Base64图像
- ios - ios - 根据屏幕大小调整按钮的宽度和高度
- windows - 菜鸟问:如何将空文件夹推送到我的 BitBucket git repo
- python - 如何计算 Django 中跨字段的值?