PHP实现站外分享职位帖时自定义分享图片的方法
解决LinkedIn/Facebook分享职位帖时自定义图片的问题
问题说明
我网站上有若干职位招聘帖,希望分享到LinkedIn和Facebook时能自定义显示图片,而非随机图片。目前用以下代码实现分享,但分享时仍显示随机图片:
<a href="https://www.linkedin.com/sharing/share-offsite/?url=<?php echo (''.get_home_url().'/jobb/'.get_query_var('job_name'));?>" alt="linkedin"> Linked In </a>
分享异常截图:
解决方案
问题根源是社交平台(LinkedIn/Facebook)会读取目标页面的Open Graph(OG)元标签来获取分享用的图片、标题等信息,你现在只生成了分享链接,没给职位帖页面配置对应OG标签,所以平台只能随机抓图。按以下步骤操作:
1. 在职位帖页面头部添加OG元标签
在你的职位帖模板(比如single-job.php这类文件)的<head>标签里,添加以下OG标签:
<!-- Open Graph 元标签 --> <meta property="og:url" content="<?php echo esc_url(get_home_url().'/jobb/'.get_query_var('job_name')); ?>" /> <meta property="og:title" content="<?php echo esc_attr(get_the_title()); ?>" /> <meta property="og:description" content="<?php echo esc_attr(wp_trim_words(get_the_excerpt(), 20)); ?>" /> <!-- 自定义分享图片:这里假设你用自定义字段存储了职位图,字段名是job_share_image --> <?php $share_image = get_post_meta(get_the_ID(), 'job_share_image', true); if ($share_image) { $image_url = wp_get_attachment_url($share_image); echo '<meta property="og:image" content="'.esc_url($image_url).'" />'; // 可选:指定图片尺寸,帮助平台正确渲染 $image_data = wp_get_attachment_metadata($share_image); if ($image_data) { echo '<meta property="og:image:width" content="'.$image_data['width'].'" />'; echo '<meta property="og:image:height" content="'.$image_data['height'].'" />'; } } ?>
- 如果你没有用自定义字段存图片,也可以直接指定固定图片URL,或者用文章特色图:把上面的
$share_image换成get_post_thumbnail_id()即可。 - 确保图片URL是完整的绝对路径(带https://),相对路径平台识别不到。
2. 图片规格要求
为了保证分享显示效果,图片要符合平台要求:
- 尺寸:LinkedIn推荐1200×628像素,Facebook推荐1200×630像素
- 格式:JPG或PNG
- 文件大小:不超过5MB
- 避免用文字过多的图片,平台可能会裁剪
3. 刷新社交平台缓存
社交平台会缓存页面的OG信息,修改标签后,需要用平台的官方调试工具刷新缓存,这样新的图片才会生效。
4. 验证标签是否生效
修改后,查看职位帖页面的源代码,确认<head>里已经正确生成了OG标签,尤其是og:image的URL是否正确。
内容的提问来源于stack exchange,提问作者user1847090
相关产品推荐
相关产品推荐

