使用屏幕截图作为og:图像与LinkedIn共享时过早缓存

时间:2018-04-19 08:18:01

标签: php wordpress linkedin

我想将页面的屏幕截图显示为og:image。该网站是定制的WP,用于生成屏幕截图,我使用免费的WP服务MSHOTS。

在我的functions.php文件中,我已禁用og:插件生成的图像输出

add_filter('wpseo_opengraph_image' , '__return_false' );

并添加了另一个函数来从页面生成屏幕截图并将其用作og:image

add_action( 'wp_head', 'add_screenshot_as_ogimage' );

function add_screenshot_as_ogimage(){

echo '<meta property="og:image" content="https://s.wordpress.com/mshots/v1/'.urlencode( $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"] ).'?w=1200"/>';  
}

问题是,当加载页面时,正在生成屏幕截图,但它不会立即发生。生成屏幕截图通常需要大约30秒。在那30秒期间,只有黑色图像可见文本&#34;生成预览&#34;。

不幸的是,这是LinkedIn争夺分享的形象。

所以我尝试添加可选代码来填充WP.com缓存

add_action( 'wp_footer', 'add_screenshot_as_ogimage_footer' );

function add_screenshot_as_ogimage_footer(){
//prime WP.com cache to get the image and not a loading screen
echo '<img src="https://s.wordpress.com/mshots/v1/'.urlencode( $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"] ).'?w=1200" width="1" height="1" style="visibility: hidden;">';
}

但仍然没有运气。我还尝试在第一次操作之前添加一个php sleep()函数,但是整个页面在函数中设置的时间内没有加载。

另外,奇怪的是,Google+和Facebook能够将生成的预览抓取为og:image就好了。只有LinkedIn才给我这个麻烦。

有没有解决方法,是否可以在LinkedIn(或所有抓取工具)访问该页面之前设置延迟?我意识到LinkedIn每隔几天清除一次缓存,但这并不符合我的需求。

0 个答案:

没有答案