给主题添加百度熊掌号

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

一、准备工作

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

 

二、主题选项添加设置项

首先:打开inc/options/begin-options.php文件,大约5730行的位置,找到代码

  1. $options[] = array(
  2. 'name' => '将文章主动推送到百度',
  3. 'desc' => '启用',
  4. 'id' => 'baidu_submit',
  5. 'class' => 'be_ico',
  6. 'std' => '0',
  7. 'type' => 'checkbox'
  8. );

在其上面(也可以在你喜欢的位置)添加

  1. $options[] = array(
  2. 'name' => '百度熊掌号',
  3. 'desc' => '启用',
  4. 'id' => 'baidu_xzh',
  5. 'class' => 'be_ico',
  6. 'std' => '0',
  7. 'type' => 'checkbox'
  8. );
  9. $options[] = array(
  10. 'name' => '',
  11. 'desc' => '熊掌号ID',
  12. 'id' => 'xzh_id',
  13. 'class' => 'hidden',
  14. 'std' => '',
  15. 'type' => 'text'
  16. );
  17. $options[] = array(
  18. 'name' => '',
  19. 'desc' => '准入密钥',
  20. 'id' => 'xzh_token',
  21. 'class' => 'hidden',
  22. 'std' => '',
  23. 'type' => 'text'
  24. );
  25. $options[] = array(
  26. 'name' => '',
  27. 'desc' => '显示关注按钮',
  28. 'id' => 'xzh_gz',
  29. 'class' => 'hidden',
  30. 'std' => '0',
  31. 'type' => 'checkbox'
  32. );
  33. $options[] = array(
  34. 'id' => 'clear'
  35. );

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

然后:打开inc/options/includes/themes-options.php文件,大约605行的位置,找到代码

  1. jQuery('#ad_h_t').click(function() {
  2. jQuery('#section-ad_ht_c, #section-ad_ht_m').fadeToggle(400);
  3. });
  4. if (jQuery('#ad_h_t:checked').val() !== undefined) {
  5. jQuery('#section-ad_ht_c, #section-ad_ht_m').show();
  6. }

在其上面(也可以在你喜欢的地方)添加

  1. jQuery('#baidu_xzh').click(function() {
  2. jQuery('#section-xzh_id, #section-xzh_token, #section-xzh_gz').fadeToggle(400);
  3. });
  4. if (jQuery('#baidu_xzh:checked').val() !== undefined) {
  5. jQuery('#section-xzh_id, #section-xzh_token, #section-xzh_gz').show();
  6. }

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

 

三、添加熊掌号函数

打开inc/inc.php文件,大约755行的位置,找到代码

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

在其下面(也可以在你喜欢的地方)添加

  1. //熊掌号
  2.     // 获取文章/页面摘要
  3.     function zm_excerpt($len=220){
  4.         if ( is_single() || is_page() ){
  5.             global $post;
  6.             if ($post->post_excerpt) {
  7.                 $excerpt  = $post->post_excerpt;
  8.             } else {
  9.                 if(preg_match('/<p>(.*)</p>/iU',trim(strip_tags($post->post_content,"<p>")),$result)){
  10.                     $post_content = $result['1'];
  11.                 } else {
  12.                     $post_content_r = explode("n",trim(strip_tags($post->post_content)));
  13.                     $post_content = $post_content_r['0'];
  14.                 }
  15.                 $excerpt = preg_replace('#^(?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,0}'.'((?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,'.$len.'}).*#s','$1',$post_content);
  16.             }
  17.             return str_replace(array("rn""r""n"), ""$excerpt);
  18.         }
  19.     }
  20.     // 获取文章中的三张图
  21.     function zm_post_img(){
  22.         global $post;
  23.         $content = $post->post_content;
  24.         preg_match_all('/<img .*?src=["|'](.+?)["|'].*?>/', $content, $strResult, PREG_PATTERN_ORDER); 
  25.         $n = count($strResult[1]);  
  26.         if($n >= 3){
  27.             $src = $strResult[1][0].'","'.$strResult[1][1].'","'.$strResult[1][2];
  28.         }else{
  29.             if( $values = get_post_custom_values("thumbnail") ) {
  30.                 $values = get_post_custom_values("thumbnail");
  31.                 $src = $values [0];
  32.             } elseif( has_post_thumbnail() ){
  33.                 $thumbnail_src = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID),'full');
  34.                 $src = $thumbnail_src [0];
  35.             } else {
  36.                 if($n > 0){
  37.                     $src = $strResult[1][0];
  38.                 } 
  39.             }
  40.         }
  41.         return $src;
  42.     }
  43.     // 添加熊掌号代码
  44.     add_action('wp_head','baidu_xzh');
  45.     function baidu_xzh() {
  46.         if(is_single() || is_page()){
  47.         echo '<script type="application/ld+json">{
  48.             "@context": "https://ziyuan.baidu.com/contexts/cambrian.jsonld",
  49.             "@id": "'.get_the_permalink().'",
  50.             "appid": "'. zm_get_option('xzh_id').'",
  51.             "title": "'.get_the_title().'",
  52.             "images": ["'.zm_post_img().'"],
  53.             "description": "'.zm_excerpt().'",
  54.             "pubDate": "'.get_the_time('Y-m-dTH:i:s').'"
  55.         }</script>';}
  56.         echo '<script src="//msite.baidu.com/sdk/c.js?appid='. zm_get_option('xzh_id').'"></script>';
  57.         }
  58.         if ( zm_get_option('xzh_token') == '' ) {
  59.         } else {
  60.             // 自动推送
  61.             if(!function_exists('Baidu_XZH_Submit')){
  62.                 function Baidu_XZH_Submit($post_ID) {
  63.                     //已成功推送的文章不再推送
  64.                     if(get_post_meta($post_ID,'BaiduXZHsubmit',true) == 1) return;
  65.                     $url = get_permalink($post_ID);
  66.                     $api = 'http://data.zz.baidu.com/urls?appid='. zm_get_option('xzh_id').'&token='. zm_get_option('xzh_token').'&type=realtime';
  67.                     $request = new WP_Http;
  68.                     $result = $request->request( $api , array( 'method' => 'POST', 'body' => $url , 'headers' => 'Content-Type: text/plain') );
  69.                     $result = json_decode($result['body'],true);
  70.                     //如果推送成功则在文章新增自定义栏目BaiduXZHsubmit,值为1
  71.                     if (array_key_exists('success',$result)) {
  72.                         add_post_meta($post_ID, 'BaiduXZHsubmit', 1, true);
  73.                     }
  74.                 }
  75.                 add_action('publish_post', 'Baidu_XZH_Submit', 0);
  76.             }
  77.     }

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

 

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

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

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

  1. <?php the_content(); ?>

在其下面添加

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

即可。

 

五、添加熊掌号样式

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

  1. /* xzh */
  2. ._25ZfXD {
  3. background: #fff !important;
  4. color: #666 !important;
  5. line-height: 35px !important;
  6. padding: 0 !important;
  7. height: 35px !important;
  8. cursor: pointer;
  9. border: 1px solid #ddd !important;
  10. }
  11. ._25ZfXD:hover {
  12. background: #3690cf !important;
  13. color: #fff !important;
  14. border: 1px solid #3690cf !important;
  15. }
  16. .fsM37u, ._2QGloY, ._3YDNrK {
  17. display: none !important;
  18. }
  19. #cambrian0 {
  20. height: 70px !important;
  21. }
  22. ._1mpIIe::after {
  23. border: none !important;
  24. }
  25. @keyframes fadeOut {
  26. from {
  27. opacity: 1;
  28. }
  29. to {
  30. opacity: 0;
  31. }
  32. }

即可。

 

六、熊掌号设置

  • 熊掌号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的栏目。但奇怪的是,熊掌号那边已经推送成功了,自定义栏目中并没有增加这个栏目,暂不清楚什么原因
若文章图片、下载链接、网盘密码等信息出错,请留言反馈,博主将第一时间更新!

本文来源于互联网:给主题添加百度熊掌号

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注