Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php WP-SEO-by-Yoast-如何根据类别设置不同的og:image_Php_Wordpress_Image_Facebook Graph Api_Seo - Fatal编程技术网

Php WP-SEO-by-Yoast-如何根据类别设置不同的og:image

Php 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 我的黑

我想为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共享图像之前,接受的答案对我不起作用。