专栏首页沈唁志纯代码实现熊掌号H5页面结构化改造

纯代码实现熊掌号H5页面结构化改造

熊掌号为百度搜索新产品,即原百度官方号,百度熊掌号是站长、自媒体、开发者、商家等各种内容和服务提供者入驻百度的身份账号,该账号可实现包括百度搜索资源平台、百度数据开放平台、百家号自媒体平台、用户运营平台等各类平台的能力互通。

纯代码实现熊掌号 H5 页面结构化改造

首先我们需要根据百度熊掌号后台的“页面改造”里的提示先给自己的站点做个小小的改造以便百度熊掌号可以快速的识别和运用我们站点的链接数据,比如搜索结果中以结构化样式展现等

熊掌号改造

页面改造最重要的其实就是添加 JSON_LD 数据了,其实可以用下面的代码来实现:

//获取文章/页面摘要
function fanly_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);
 }
}
//优先获取文章中的三张图,否则依次获取自定义图片/特色缩略图/文章首图 last update 2017/11/23
function fanly_post_imgs(){
 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("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;
}

百度熊掌号在 Json_LD 数据里面是支持单张缩略图和三张缩略图的样式,所以上述代码会优先获取文章中的三张图,否则依次获取自定义图片/特色缩略图/文章首图。

建议大家把以上两段代码添加到你需要接入熊掌号的 WordPress 站点主题的 functions.php 文件中,然后继续:

<?php
if(is_single()){
 echo '<script type="application/ld+json">{
 "@context": "https://ziyuan.baidu.com/contexts/cambrian.jsonld",
 "@id": "'.get_the_permalink().'",
 "appid": "这里请填写熊掌号 ID",
 "title": "'.get_the_title().'",
 "images": ["'.fanly_post_imgs().'"],
 "description": "'.fanly_excerpt().'",
 "pubDate": "'.get_the_time('Y-m-d\TH:i:s').'"
}</script>
';}
?>

将上述代码添加在你的 WordPress 主题的 header.php 文件合适的位置,以上代码还做了一个 if 判断,只让该段代码在文章中输出。

关于 WordPress 接入百度熊掌号的 Json_LD 数据代码改造就给大家分享到这里了吧。

沈唁志|一个PHPer的成长之路! 原创文章采用CC BY-NC-SA 4.0协议进行许可,转载请注明:转载自:纯代码实现熊掌号H5页面结构化改造

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 详解Linux运维工程师必备技能

    沈唁
  • 几个实用的 WordPress 代码片段

    沈唁
  • WordPress添加随便看看

    沈唁
  • Destoon 6.0 guestbook.php 通用SQL注入漏洞

    刚看到今天发布了Destoon 6.0 2017-01-09 更新,用我在【代码审计】小密圈里说过的方法,瞬间找到修复的一处SQL注入漏洞。用中午的20分钟,小...

    phith0n
  • WordPress 中禁止编辑“已发布”的文章

    出于某些目的(如多人博客要保护自己已经发表的文章不受篡改),我们可能需要对WordPress 中“已发布”的文章进行“编辑”的限制。下面由Jeff 分享个来自p...

    Jeff
  • ThinkPHP5错误解析之variable type error:array

    在TP5的post提交方式中,有一个坑爹的bug就是post提交数据不能提交数组。 请注意是不能提交数组形式的数据,而不是单纯的数据。举个例子:注意以下2种格...

    紫旭Blog - blog.zixutech.cn
  • BBS论坛(三十)

    zhang_derek
  • 百度分享无法抓取图片及摘要的折中解决办法

    前天,cy 在《仿异次元百度分享工具条张戈修改版》一文留言告知,部分百度分享无法抓取图片: ? 亲自试了下,发现还真是抓不到图片,而且分享的内容也很单调!就一个...

    张戈
  • python3微信企业号 发送图文

    py3study
  • 只需五步,自己动手写一个静态博客

    众所周知,随着Github Pages这样的服务越来越流行,现在像Hexo、Hugo、Pelican这样的静态博客越来越多, 像我以前就是用Pelican的,但...

    muxueqz

扫码关注云+社区

领取腾讯云代金券