我想为Wordpress中的特定帖子设置单独的facebook开放图元图像(og:image
)。
例如,如果帖子属于类别1,请将og:image
设置为cat_1_image.jpg
,如果帖子属于id = 2的类别,请将其设置为cat_2_image.jpg
。
伪码:
if($category->term_id == 1)
og:image = 'cat_1_image.jpg';
elseif($category->term_id == 2)
og:image = 'cat_2_image.jpg';
elseif($category->term_id == 3) // CatID 3 means 'Post has images, no default og:image, please'
og:image = '';
现在,我已经查看了wpseo的各种钩子,例如wpseo_pre_analysis_post_content
和wpseo_opengraph_image
,但这似乎并没有朝正确的方向发展。
有人可以向我解释如何实现不同的og:不同帖子类别的图片吗?!
我的黑客的原因:WP SEO不会使用图库短代码来获取插入帖子的图像。它将回退为包含默认图像(在WP SEO选项下指定)作为og:image。因此,我想禁用某个类别的帖子的默认图像(即类别' has_images'),并让facebook刮刀拿起图库图像 - 如果没有默认值,它们会被拾取:图像存在!
答案 0 :(得分:5)
您可以尝试这样的事情(未经测试)。它使用wpseo_opengraph_image
Yoast过滤器作为opengraph图像。
add_filter('wpseo_opengraph_image', 'category_image');
function category_image($image) {
global $post;
if( in_category( 'category1', $post->ID ) ) {
$image = get_stylesheet_directory_uri().'/images/cat_1_image.jpg';
} elseif(in_category( 'category2', $post->ID )) {
$image = get_stylesheet_directory_uri().'/images/cat_2_image.jpg';
}
return $image;
}
在此示例中,我猜测您的图片位于主题图片文件夹中。
答案 1 :(得分:3)
请注意,Rich提供的接受答案仅适用于您的Wordpress主题/函数为帖子设置_thumbnail_id
元值的情况。在我的情况下,它没有(由于各种自定义),所以我不得不通过向get_post_metadata
添加过滤器并在获取元数据时返回正确的自定义thumbnail_id来伪造该部分:
add_filter('get_post_metadata', 'so28295023', 10, 4);
function so28295023($ignore, $object_id, $meta_key, $single ) {
if($single && $meta_key == '_thumbnail_id') {
return get_custom_thumbnail_id();
}
}
当然,get_custom_thumbnail_id()
是我自己的函数,它返回我想要附加的缩略图的ID。我没有找到一种方法来简单地返回缩略图的路径而不是ID。