技术帝的平台展示,网站建设、网站推广、SEO技术、网站优化、电子商务推广、平面美工和软件测试等技术干货分享。

Facebook获取wordpress制作网站og标签报错,如何调试?

建站技术 abel-lan 48℃ 0评论

问题描述

使用Wordpress开发的项目,在主题funcions.php文件添加了增加og标签的代码(文章底部提供添加og标签代码),但使用Facebook分享网站文章时才无法获取,报以下错误。

Facebook获取wordpress制作网站og标签报错
Facebook获取wordpress制作网站og标签报错

解决方法

遇到该问题,最大的难点就是无法看到错误详细信息,无从下手解决。幸好Facebook提供了FACEBOOK for Developers,这里边有分享调试器(网址:https://developers.facebook.com/tools/debug/),通过这个工具可排查问题原因。

在Facebook分享调试器页面输入网址调试,看到以下结果:

Facebook分享调试器检测结果
Facebook分享调试器检测结果

这时可以点击Facebook分享调试器结果底部的【查看抓取工具看到的实际网址】,可以进一步看到抓取的源代码,进而判断具体原因。

我的问题是由于自己加入的防采集代码,正好将facebook分享抓取判断为非法采集,导致抛出Wordpress error,就正好是我们前边看到的错误信息。修改或删除防采集代码后问题解决。

扩展一 WordPress使用主题functions.php添加og meta标签代码

add_action('wp_head', 'abel_add_head_meta_og', 1, 1);
if(!function_exists('abel_add_head_meta_og')){
    function abel_add_head(){
        if(is_single() || is_page()){
            echo '<meta property="og:type" content="article"/>
            <meta property="og:url" content="'.get_the_permalink().'"/>
            <meta property="og:title" content="'.trim(wp_title('',0)).' | '.get_bloginfo('name').'" />
            <meta property="og:description" content="'.get_the_excerpt().'" />
            <meta property="og:image" content="'.abel_get_post_thumbnail(get_the_ID()).'" />';
        }
    }
}
function abel_get_post_thumbnail($post_ID){
    if(isset($attachment_id) && $attachment_id) return $attachment_id;
    if (has_post_thumbnail()) {
        $timthumb_src = wp_get_attachment_image_src( get_post_thumbnail_id($post_ID), 'full' );
        $url = $timthumb_src[0];
    } else {
        if(!isset($post_content)){
            $post = get_post($post_ID);
            $post_content = $post->post_content;
        }
        preg_match_all('|<img.*?src=[\'"](.*?)[\'"].*?>|i', do_shortcode($post_content), $matches);
        if( $matches && isset($matches[1]) && isset($matches[1][0]) ){
            $url =  $matches[1][0];
        }else{
            $url =  '';
        }
    }

    return $url;
}

拓展二 WordPress使用主题functions.php添加防采集代码

//禁止UA为空或含有PHP的请求
function deny_mirrored_request(){
    $ua = $_SERVER['HTTP_USER_AGENT'];
    if(!$ua || preg_match('/PHP/i', $ua)){
        header("Content-type: text/html; charset=utf-8");
        wp_die('请勿采集本站!');
    }
}
if(!is_admin()) {
    add_action('init', 'deny_mirrored_request', 10);
}

转载请注明:半亩方塘 » Facebook获取wordpress制作网站og标签报错,如何调试?

赞 (12)支付宝扫码打赏微信扫码打赏分享
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址