Facebook没有抓住正确的og:初始分享图像

时间:2016-09-20 18:39:08

标签: php wordpress facebook facebook-graph-api

我的Wordpress网站上有一小部分PHP代码,可以为每个帖子创建OpenGraph标签。不幸的是,当我将URL复制到新的FB帖子时,Facebook没有抓取特色图片(og:image)。

只是为了澄清事件的流程:

  1. 我的用户创建了一个Wordpress帖子。

  2. 然后有人通过将链接复制到FB帖子中在Facebook上分享。 Facebook显示正确的文本,但抓取错误的og:image。

  3. 我转到对象调试器并测试Wordpress帖子。它显示没有错误和所有正确的og标签(包括正确的og:图像),但在其缩略图中显示该网站的默认(错误)图像!

  4. 然后,如果我点击Scrape New按钮,会出现正确的缩略图(与og:image标签匹配)。

  5. 现在,如果用户在Facebook中共享相同的Wordpress帖子,则FB -does-在FB帖子中显示正确的og:图像。

  6. 所以最初抓取-default-图像,但不是特色图像(即Wordpress用语中的post_thumbnail()。但是,如果我打开Facebook的对象调试器并获得一个对于页面的新刮擦,总会出现正确的图像。这已经变得乏味。

    令人抓狂的是,如果我查看对象调试器进行初始刮擦,虽然显示默认图像(这是不正确的)如果我查看统计数据,Facebook表示它看到的og:image标签是正确的 - 。所以它 - 它 - 它刮掉了正确的图像,但显示的图像不正确!

    我在对象调试器中看到的唯一错误是"图像可能太小。图像必须至少为200x200 ......" ...这不是真的。图像始终至少为300 x 209。

    我已检查页眉中的代码是否正确生成。

    我没有使用缓存插件或CDN。

    所以:我怎样才能确保FB总是抓住正确的og:image,无需打开对象调试器和Scrape New。

    再次说明:我在这里看到了类似的(旧的)问题,其中“回答”问题是'是为每个帖子进行新的刮擦。嗯,这不会与我的用户一起飞行。我们需要一种方法来确保新帖子显示正确的og:图像而无需进行任何额外的工作。

    function insert_fb_in_head() {
        global $post;
        if ( !is_singular()) //if it is not a post or a page
            return;
    
    //echo '<meta property="fb:admins" content="YOUR USER ID"/>';
    
      echo '<meta property="og:title" content="' . get_the_title() . '"/>';
      echo '<meta property="og:type" content="article"/>';
      echo '<meta property="og:url" content="' . get_permalink() . '"/>';
      echo '<meta property="og:site_name" content="example site"/>';
      echo '<meta property="og:description" content="' . get_post_meta(get_the_ID(), '_yoast_wpseo_metadesc', true). '"/>';
    
    if(!has_post_thumbnail( $post->ID )) { //the post does not have featured image, use a default image
        $default_image="http://jchmusic.com/images/default-250.jpg"; //replace this with a default image on your server or an image in your media library
        echo '<meta property="og:image" content="' . $default_image . '"/>';
    }
    else{
        $thumbnail_src = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'medium' );
        echo '<meta property="og:image" content="' . esc_attr( $thumbnail_src[0] ) . '"/>';
        echo '<meta property="og:image:width" content="' . esc_attr( $thumbnail_src[1] ) . '"/>';
        echo '<meta property="og:image:height" content="' . esc_attr( $thumbnail_src[2] ) . '"/>';      
    
    }
    echo "";
    }
     add_action( 'wp_head', 'insert_fb_in_head', 5 );
      /* Facebook ends *************/
    

0 个答案:

没有答案