在我的功能中。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秒内,只有黑色图像可见,文本为“生成预览”。
不幸的是,这是LinkedIn为分享而获取的图像。
因此,我尝试向prime 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()
函数,但整个页面不会在函数中设置的时间内加载。
此外,奇怪的是,谷歌+和脸书能够抓取生成的预览作为og:图像刚刚好。只有LinkedIn给我带来了这些麻烦。
是否有任何解决方法,可以在LinkedIn(或所有爬虫)访问页面之前设置延迟?我意识到LinkedIn每隔几天就会清空缓存,但这不符合我的需要。