»

通过自定义字段控制向文章中添加熊掌号页面代码

    WordPress  
浏览器防盗链CLB插件网站镜像百度云加速爬虫htaccessCDN工作WP Rocketwindows主机查询访客cookiesweb.configWordPress插件wordpress重定向网站优化IIS身份认证网络安全Wp Super Cache前端

百度站长平台上月大调整,不仅是界面上,而且在内容上也有变动,例如,熊掌号已经开始面向普通站长公测了。至于这个熊掌号的文章提交,是好是坏,大家还没拿定主意,官方也没有非常明确说明。很多人担心它会和站长网站上的文章争夺流量,所以对此公测都很谨慎。

但试一试未尝不可,咱得自己控制拿哪篇文章测试不是?所以呢,可以通过自定义字段,也就是自定义栏目设定来决定哪篇提交到熊掌号平台。

Custom-Field

 

如上图所示,只要自定义个字段,随便写个数值,之后通过函数来判断,如果有非空值的自定义栏目,就把熊掌号页面代码添加进文章页面,如果没有,则维持原状。

 

大方向有了,就着手开始按要求准备了。

熊掌号后台给了几个规定的页面格式。包括添加 canonical 标签、添加 JSON_LD 数据、添加熊掌号ID声明,重要的是后两项,本文也围绕这后两项来说明。

本文禁止住转载。任何形式转载请联系作者(时光在路上 www.timezls.com)。时光在路上保留所有权利

 

 一、总体控制:添加 Json_LD 数据 

JSON-LD 是 JavaScript Object Notation for Linked Data 的缩写,是一种基于 JSON 表示和传输互联数据(Linked Data)的方法。它描述了如何通过 JSON 表达有向图,以及如何在一个文档中混合,从而表达互联数据及非互联数据。JSON-LD的语法和 JSON 兼容。如果基于 JSON-LD,则可以在基于 Web 的编程环境中使用互联数据,进而构造可互操作的互联数据 Web 服务(linked data web services),并向基于 JSON 的存储引擎中保存互联数据。

在主题functions.php文件中添加如下代码:

本文禁止住转载。任何形式转载请联系作者(时光在路上 www.timezls.com)。时光在路上保留所有权利

  1. // 在WordPress中添加百度熊掌号 Json_LD 数据 
  2. add_action('wp_head', 'my_original',0);  
  3. if( !function_exists('my_original') ){  
  4.   function my_original(){  
  5.     // 新增判断,如果是原创文章才加熊掌号  
  6.      global $wpdb;  
  7.      $post_id = ( null === $post_id ) ? get_the_ID() : $post_id;  
  8.      $original = get_post_meta($post_id , 'original', true) ? ',"isOriginal""1"' : '';  
  9.      if ( is_singular() && !empty$original ) ) {  // 为文章或页面,并且在自定义字段中添加了非空的“original”字段值时才生效  
  10.         date_default_timezone_set('PRC');  // 大陆时间  
  11.         echo ' // 输出代码  
  12.     <script type="application/ld+json">{  
  13.     "@context""https://zhanzhang.baidu.com/contexts/cambrian.jsonld",  
  14.     "@id""'.get_the_permalink().'"// 获得固定链接  
  15.     "appid""1234567789213634"// 自己熊掌号的唯一id值  
  16.     "title""'.get_the_title().'"// 文章标题  
  17.     "images": ["'.original_post_imgs().'"],  // 图像地址 ,调用定义的original_post_imgs()函数
  18.     "description""'.get_description().'"// 文章描述 ,嗲用定义的 get_description()函数
  19.     "pubDate""'.get_the_time('Y-m-d\TH:i:s').'" // 发布日期  
  20.     '.$original.'}</script>';  
  21.     }   
  22.       else { echo ''; }   
  23.   }  
  24. }  

 

字段值说明:

JSON-LD

二、定义获取文章图片的函数original_post_imgs()

在上述代码下面添加如下代码:

  1. //  优先获取文章中的三张图,否则依次获取自定义图片/特色缩略图/文章首图  
  2. function original_post_imgs(){  
  3.     global $post;  
  4.     $content = $post->post_content;    
  5.     preg_match_all('/<img.*?(?: |\\t|\\r|\\n)?src=[\'"]?(.+?)[\'"]?(?:(?: |\\t|\\r|\\n)+.*?)?>/sim', $content$strResult, PREG_PATTERN_ORDER);    
  6.     $n = count($strResult[1]);    
  7.     if($n >= 3){  
  8.         $src = $strResult[1][0].'","'.$strResult[1][1].'","'.$strResult[1][2];  
  9.     }else{  
  10.         if$values = get_post_custom_values("thumb") ) {   // 输出自定义域图片地址  
  11.             $values = get_post_custom_values("thumb");  
  12.             $src = $values [0];  
  13.         } elseif( has_post_thumbnail() ){   // 如果有特色缩略图,则输出缩略图地址  
  14.             $thumbnail_src = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID),'full');  
  15.             $src = $thumbnail_src [0];  
  16.         } else {    // 从文章中获取  
  17.             if($n > 0){  // 提取首图  
  18.                 $src = $strResult[1][0];  
  19.             }   
  20.         }  
  21.     }  
  22.     return $src;  
  23. }  

 

本文禁止全文转载。任何形式转载请联系作者(时光在路上 www.timezls.com) Copyright © 2023. All Rights Reserved

三、定义获取文章摘要的代码get_description()

 在上面两段代码后添加如下代码:

  1. //熊掌号获取文章摘要  
  2. function get_description() {  
  3.     global $s$post;  
  4.     $description = '';  
  5.     $blog_name = get_bloginfo('name');  
  6.     $iexcerpt = $post->post_excerpt;  
  7.     if (is_singular()) {  
  8.         $description1 = get_post_meta($post->ID, "description", true);  
  9.         $description2 = str_replace("\n","",mb_strimwidth(strip_tags($post->post_content), 0, 120, "…", 'utf-8'));  // 输出120字  
  10.     
  11.         $description = $description1 ? $description1 : $description2;  // 首先使用自定义字段description的内容,如没有则使用文章内容前120字  
  12.     }  
  13.     $description = mb_substr($description, 0, 120, 'utf-8');   
  14.     return $description;  
  15. }  

 

本文禁止无授权转载 - 时光在路上 www.timezls.com 保留所有权利

四、在主题头部文件添加熊掌号ID声明的代码

添加到header.php文件</head>前即可,代码如下:

  1. <?php    
  2. // 判断是有自定义非空值original字段后输出熊掌号ID声明    
  3. if(  is_singular() ){ 
  4.     $post_id = ( null === $post_id ) ? get_the_ID() : $post_id;  
  5.     $original = get_post_meta($post_id , 'original', true);  
  6.     if( !emptyempty($original) ){ echo '<script src="//msite.baidu.com/sdk/c.js?appid=1234567789213634"></script>'; } // 改成你自己的id值  
  7. }  
  8. ?>    

上述四步骤完成后,基本上就可以按“心情儿”规定哪篇文章可以有百度熊掌号代码了。写完文章后到平台手动提交即可。

至于怎么自动提交,熊掌号平台有另外的一套接口。有兴趣可以研究一下。

代码我已放到网盘:链接: pan.baidu.com/s/1nvrBw2P 密码: rqca

时光在路上扫码阅读、分享
  • 版权声明:该文章由 时光在路上 发表,共 3888字。除非特别标注来源,否则为原创。详见《版权声明》部分。
  • 转载请注明:文章标题和文章链接 - 时光在路上 - 也可直接“复制本文链接” 或 使用右边二维码分享本文 →