Php WP-SEO-by-Yoast-如何根据类别设置不同的og:image
我想为Wordpress中的特定帖子设置个人facebook开放图元图像og:image 例如,如果帖子属于类别1,则将og:image设置为cat_1_image.jpg;如果帖子属于id=2的类别,则将其设置为cat_2_image.jpg 伪代码: 现在,我已经研究了wpseo的各种挂钩,比如wpseo_pre_analysis_post_内容和wpseo_opengraph_图像,但这似乎并没有朝着正确的方向发展 有谁能给我解释一下如何为不同的帖子类别实现不同的og:imagesPhp WP-SEO-by-Yoast-如何根据类别设置不同的og:image,php,wordpress,image,facebook-graph-api,seo,Php,Wordpress,Image,Facebook Graph Api,Seo,我想为Wordpress中的特定帖子设置个人facebook开放图元图像og:image 例如,如果帖子属于类别1,则将og:image设置为cat_1_image.jpg;如果帖子属于id=2的类别,则将其设置为cat_2_image.jpg 伪代码: 现在,我已经研究了wpseo的各种挂钩,比如wpseo_pre_analysis_post_内容和wpseo_opengraph_图像,但这似乎并没有朝着正确的方向发展 有谁能给我解释一下如何为不同的帖子类别实现不同的og:images 我的黑
我的黑客行为的原因:WP SEO不会拾取使用gallery短代码插入帖子中的图像。它将退回到包含WP SEO选项下指定的默认图像作为og:image。因此,我想禁用特定类别(即“has_images”类别)帖子的默认图像,并让facebook刮板拾取图库图像-如果没有默认的og:images存在,它们确实会被拾取 你可以试试这种未经测试的东西。它对opengraph图像使用wpseo_opengraph_image Yoast过滤器
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;
}
在本例中,我猜您的图像位于“主题图像”文件夹中。您可以尝试未经测试的类似内容。它对opengraph图像使用wpseo_opengraph_image Yoast过滤器
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;
}
在这个例子中,我猜你的图片在themes images文件夹中。请注意,只有当你的Wordpress主题/函数为帖子设置了_缩略图_id元值时,Rich提供的公认答案才有效。在我的例子中,这并不是由于各种自定义,所以我不得不通过添加过滤器来伪造该部分,以获取\u post\u元数据,并在获取元数据时返回正确的自定义缩略图\u 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。请注意,只有当您的Wordpress主题/函数为帖子设置了“缩略图”ID元值时,Rich提供的公认答案才有效。在我的例子中,这并不是由于各种自定义,所以我不得不通过添加过滤器来伪造该部分,以获取\u post\u元数据,并在获取元数据时返回正确的自定义缩略图\u 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。NICE,谢谢@Rich,代码运行良好!问题解决了!我爱死你了!很好,谢谢@Rich,代码运行良好!问题解决了!我爱死你了!在我在“搜索引擎优化”>“社交”>“Facebook”下的Yoast设置中设置默认OG共享图像之前,接受的答案对我不起作用。在我在“搜索引擎优化”>“社交”>“Facebook”下的Yoast设置中设置默认OG共享图像之前,接受的答案对我不起作用。