百度站长平台上月大调整,不仅是界面上,而且在内容上也有变动,例如,熊掌号已经开始面向普通站长公测了。至于这个熊掌号的文章提交,是好是坏,大家还没拿定主意,官方也没有非常明确说明。很多人担心它会和站长网站上的文章争夺流量,所以对此公测都很谨慎。
但试一试未尝不可,咱得自己控制拿哪篇文章测试不是?所以呢,可以通过自定义字段,也就是自定义栏目设定来决定哪篇提交到熊掌号平台。
如上图所示,只要自定义个字段,随便写个数值,之后通过函数来判断,如果有非空值的自定义栏目,就把熊掌号页面代码添加进文章页面,如果没有,则维持原状。
大方向有了,就着手开始按要求准备了。
熊掌号后台给了几个规定的页面格式。包括添加 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)。时光在路上保留所有权利
- // 在WordPress中添加百度熊掌号 Json_LD 数据
- add_action('wp_head', 'my_original',0);
- if( !function_exists('my_original') ){
- function my_original(){
- // 新增判断,如果是原创文章才加熊掌号
- global $wpdb;
- $post_id = ( null === $post_id ) ? get_the_ID() : $post_id;
- $original = get_post_meta($post_id , 'original', true) ? ',"isOriginal": "1"' : '';
- if ( is_singular() && !empty( $original ) ) { // 为文章或页面,并且在自定义字段中添加了非空的“original”字段值时才生效
- date_default_timezone_set('PRC'); // 大陆时间
- echo ' // 输出代码
- <script type="application/ld+json">{
- "@context": "https://zhanzhang.baidu.com/contexts/cambrian.jsonld",
- "@id": "'.get_the_permalink().'", // 获得固定链接
- "appid": "1234567789213634", // 自己熊掌号的唯一id值
- "title": "'.get_the_title().'", // 文章标题
- "images": ["'.original_post_imgs().'"], // 图像地址 ,调用定义的original_post_imgs()函数
- "description": "'.get_description().'", // 文章描述 ,嗲用定义的 get_description()函数
- "pubDate": "'.get_the_time('Y-m-d\TH:i:s').'" // 发布日期
- '.$original.'}</script>';
- }
- else { echo ''; }
- }
- }
字段值说明:
二、定义获取文章图片的函数original_post_imgs()
在上述代码下面添加如下代码:
- // 优先获取文章中的三张图,否则依次获取自定义图片/特色缩略图/文章首图
- function original_post_imgs(){
- global $post;
- $content = $post->post_content;
- preg_match_all('/<img.*?(?: |\\t|\\r|\\n)?src=[\'"]?(.+?)[\'"]?(?:(?: |\\t|\\r|\\n)+.*?)?>/sim', $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("thumb") ) { // 输出自定义域图片地址
- $values = get_post_custom_values("thumb");
- $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;
- }
本文禁止全文转载。任何形式转载请联系作者(时光在路上 www.timezls.com) Copyright © 2023. All Rights Reserved
三、定义获取文章摘要的代码get_description()
在上面两段代码后添加如下代码:
- //熊掌号获取文章摘要
- function get_description() {
- global $s, $post;
- $description = '';
- $blog_name = get_bloginfo('name');
- $iexcerpt = $post->post_excerpt;
- if (is_singular()) {
- $description1 = get_post_meta($post->ID, "description", true);
- $description2 = str_replace("\n","",mb_strimwidth(strip_tags($post->post_content), 0, 120, "…", 'utf-8')); // 输出120字
- $description = $description1 ? $description1 : $description2; // 首先使用自定义字段description的内容,如没有则使用文章内容前120字
- }
- $description = mb_substr($description, 0, 120, 'utf-8');
- return $description;
- }
本文禁止无授权转载 - 时光在路上 www.timezls.com 保留所有权利
四、在主题头部文件添加熊掌号ID声明的代码
添加到header.php文件</head>前即可,代码如下:
- <?php
- // 判断是有自定义非空值original字段后输出熊掌号ID声明
- if( is_singular() ){
- $post_id = ( null === $post_id ) ? get_the_ID() : $post_id;
- $original = get_post_meta($post_id , 'original', true);
- if( !emptyempty($original) ){ echo '<script src="//msite.baidu.com/sdk/c.js?appid=1234567789213634"></script>'; } // 改成你自己的id值
- }
- ?>
上述四步骤完成后,基本上就可以按“心情儿”规定哪篇文章可以有百度熊掌号代码了。写完文章后到平台手动提交即可。
至于怎么自动提交,熊掌号平台有另外的一套接口。有兴趣可以研究一下。
代码我已放到网盘:链接: pan.baidu.com/s/1nvrBw2P 密码: rqca