我想将页面的屏幕截图显示为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每隔几天清除一次缓存,但这并不符合我的需求。