给主题添加百度熊掌号

  • A+
所属分类:建博笔记

一、准备工作

  • 百度熊掌号账号一个
  • 备份相关文件

 

二、主题选项添加设置项

首先:打开【inc/options/begin-options.php】文件,找到代码

$options[] = array(
    'name' => '将文章主动推送到百度',
    'desc' => '启用',
    'id' => 'baidu_submit',
    'class' => 'be_ico',
    'std' => '0',
    'type' => 'checkbox'
);

在其上面添加

$options[] = array(
    'name' => '百度熊掌号',
    'desc' => '启用',
    'id' => 'baidu_xzh',
    'class' => 'be_ico',
    'std' => '0',
    'type' => 'checkbox'
);

$options[] = array(
    'name' => '',
    'desc' => '熊掌号ID',
    'id' => 'xzh_id',
    'class' => 'hidden',
    'std' => '',
    'type' => 'text'
);

$options[] = array(
    'name' => '',
    'desc' => '准入密钥',
    'id' => 'xzh_token',
    'class' => 'hidden',
    'std' => '',
    'type' => 'text'
);

$options[] = array(
    'name' => '',
    'desc' => '显示关注按钮',
    'id' => 'xzh_gz',
    'class' => 'hidden',
    'std' => '0',
    'type' => 'checkbox'
);

$options[] = array(
    'id' => 'clear'
);

默认情况下,该功能位于【主题选项--SEO设置】选项卡中。

然后:打开【inc/options/includes/themes-options.php】文件,找到代码

jQuery('#ad_h_t').click(function() {
    jQuery('#section-ad_ht_c, #section-ad_ht_m').fadeToggle(400);
});

if (jQuery('#ad_h_t:checked').val() !== undefined) {
    jQuery('#section-ad_ht_c, #section-ad_ht_m').show();
}

在其上面添加

jQuery('#baidu_xzh').click(function() {
    jQuery('#section-xzh_id, #section-xzh_token, #section-xzh_gz').fadeToggle(400);
});

if (jQuery('#baidu_xzh:checked').val() !== undefined) {
    jQuery('#section-xzh_id, #section-xzh_token, #section-xzh_gz').show();
}

这段代码用来控制设置项的显示与隐藏。

 

三、添加熊掌号函数

打开【inc/inc.php】文件,找到代码

// 主动推送
if (zm_get_option('baidu_submit')) {
    if(!function_exists('Baidu_Submit')){
        function Baidu_Submit($post_ID) {
            $WEB_DOMAIN = get_option('home');
            if(get_post_meta($post_ID,'Baidusubmit',true) == 1) return;
            $url = get_permalink($post_ID);
            $api = 'http://data.zz.baidu.com/urls?site='.$WEB_DOMAIN.'&token='.zm_get_option('token_p');
            $request = new WP_Http;
            $result = $request->request( $api , array( 'method' => 'POST', 'body' => $url , 'headers' => 'Content-Type: text/plain') );
            $result = json_decode($result['body'],true);
            if (array_key_exists('success',$result)) {
                add_post_meta($post_ID, 'Baidusubmit', 1, true);
            }
        }
        add_action('publish_post', 'Baidu_Submit', 0);
    }
}

在其下面添加

//熊掌号
    // 获取文章/页面摘要
    function zm_excerpt($len=220){
        if ( is_single() || is_page() ){
            global $post;
            if ($post->post_excerpt) {
                $excerpt  = $post->post_excerpt;
            } else {
                if(preg_match('/<p>(.*)<\/p>/iU',trim(strip_tags($post->post_content,"<p>")),$result)){
                    $post_content = $result['1'];
                } else {
                    $post_content_r = explode("\n",trim(strip_tags($post->post_content)));
                    $post_content = $post_content_r['0'];
                }
                $excerpt = preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,0}'.'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s','$1',$post_content);
            }
            return str_replace(array("\r\n", "\r", "\n"), "", $excerpt);
        }
    }

    // 获取文章中的三张图
    function zm_post_img(){
        global $post;
        $content = $post->post_content;
        preg_match_all('/<img .*?src=[\"|\'](.+?)[\"|\'].*?>/', $content, $strResult, PREG_PATTERN_ORDER); 
        $n = count($strResult[1]);  
        if($n >= 3){
            $src = $strResult[1][0].'","'.$strResult[1][1].'","'.$strResult[1][2];
        }else{
            if( $values = get_post_custom_values("thumbnail") ) {
                $values = get_post_custom_values("thumbnail");
                $src = $values [0];
            } elseif( has_post_thumbnail() ){
                $thumbnail_src = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID),'full');
                $src = $thumbnail_src [0];
            } else {
                if($n > 0){
                    $src = $strResult[1][0];
                } 
            }
        }
        return $src;
    }

    // 添加熊掌号代码
    add_action('wp_head','baidu_xzh');
    function baidu_xzh() {
        if(is_single() || is_page()){
            echo '<script type="application/ld+json">{
                "@context": "https://ziyuan.baidu.com/contexts/cambrian.jsonld",
                "@id": "'.get_the_permalink().'",
                "appid": "'. zm_get_option('xzh_id').'",
                "title": "'.get_the_title().'",
                "images": ["'.zm_post_img().'"],
                "description": "'.zm_excerpt().'",
                "pubDate": "'.get_the_time('Y-m-d\TH:i:s').'"
        }</script>';}
        echo '<script src="//msite.baidu.com/sdk/c.js?appid='. zm_get_option('xzh_id').'"></script>';
    }

    if ( zm_get_option('xzh_token') == '' ) {
    } else {
        // 自动推送
        if(!function_exists('Baidu_XZH_Submit')){
            function Baidu_XZH_Submit($post_ID) {
                //已成功推送的文章不再推送
                if(get_post_meta($post_ID,'BaiduXZHsubmit',true) == 1) return;
                $url = get_permalink($post_ID);
                $api = 'http://data.zz.baidu.com/urls?appid='. zm_get_option('xzh_id').'&token='. zm_get_option('xzh_token').'&type=realtime';
                $request = new WP_Http;
                $result = $request->request( $api , array( 'method' => 'POST', 'body' => $url , 'headers' => 'Content-Type: text/plain') );
                $result = json_decode($result['body'],true);
                //如果推送成功则在文章新增自定义栏目BaiduXZHsubmit,值为1
                if (array_key_exists('success',$result)) {
                    add_post_meta($post_ID, 'BaiduXZHsubmit', 1, true);
                }
            }
            add_action('publish_post', 'Baidu_XZH_Submit', 0);
        }
    }

三段函数略有注释,应该不难理解。

 

四、 前台添加熊掌号关注功能

前台涉及的文件比较多,主要涉及到以下几个文件:

  • 【single-video.php】
  • 【template/content.php】
  • 【template/content-link.php】
  • 【template/content-page.php】
  • 【template/content-aside.php】
  • 【template/content-video.php】
  • 【template/content-image.php】
  • 【template/content-quote.php】
  • 【template/content-status.php】(假如你有这个文件的话

操作方法都是一样的,在这些文件中找到代码

<?php the_content(); ?>

在其下面添加

<?php if (zm_get_option('xzh_gz')) { ?>
    <script>cambrian.render('tail')</script>
<?php } ?>

即可。

 

五、添加熊掌号样式

打开【style.css】文件,在文件最后添加

/* xzh */
._25ZfXD {
    background: #fff !important;
    color: #666 !important;
    line-height: 35px !important;
    padding: 0 !important;
    height: 35px !important;
    cursor: pointer;
    border: 1px solid #ddd !important;
}

._25ZfXD:hover {
    background: #3690cf !important;
    color: #fff !important;
    border: 1px solid #3690cf !important;
}

.fsM37u, ._2QGloY, ._3YDNrK {
    display: none !important;
}

#cambrian0 {
    height: 70px !important;
}

._1mpIIe::after {
    border: none !important;
}

@keyframes fadeOut {
    from {
        opacity: 1;
    }

    to {
        opacity: 0;
    }
}

即可。

 

六、熊掌号设置

  • 熊掌号ID和准入密钥获取方法
  1. 进入【熊掌号--搜索资源平台】,注意不是【熊掌号--熊掌号基础平台】
  2. 在左侧列表中点击【资源提交】
  3. 在右侧【内容提交】中点击【API提交】
  4. 找到【接口调用地址】:http://data.zz.baidu.com/urls?appid=12345&token=67890&type=realtime

其中:

    • appid:熊掌号ID
    • token:准入密钥
    • type:数据类型,不需要修改
  • 熊掌号启用方法
  1. 勾选【主题选项--SEO设置--百度熊掌号--启用】选项
  2. 输入【熊掌号ID】和【准入密钥】
  3. 根据个人需要,启用【显示关注按钮】

 

七、其他说明

  • 启用【百度熊掌号】功能后,正常发布文章后,后台会自动推送该文章到百度熊掌号
  • 启用该功能前发布的那些文章,貌似不会自动推送
  • 自定义文章类型下的文章和单页面文章貌似也不会自动推送
  • 正常情况下,若推送成功,会在该文章编辑页面的【自定义栏目】面板中自动添加名称为BaiduXZHsubmit,值为1的栏目
若文章图片、下载链接、网盘密码等信息出错,请留言反馈,博主将第一时间更新!如果喜欢,请打赏支持本站,谢谢大家!
isdola

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:4   其中:访客  2   博主  2

    • avatar 台庄资讯 0

      主题带了吧 :shock:

      • avatar Action 3

        熊掌号不是凉了吗?现在又可以用了?

          • avatar isdola Admin

            @Action 之前写好的,由于设定的定时发布,所以文章看上去写的有些迟了