龙笑天龙笑天  2017-12-26 06:30 龙笑天下 隐藏边栏 |   36 条评论  1,992 
文章评分 72 次,平均分 4.9

Wordpress 集成一言(Hitokoto)API 经典语句功能 wordpress

很早前就在很多博客网站看到了这个每日一句、随机语录等经典语句功能,其实我是非常想要加上这个功能的(功能控~~),但出于以下的考虑,就一直没开启集成工作:

  • 增加这个功能,就意味着要一直请求一言,这个就可能会影响网站的加载速度及性能了;另外,大家也都能感觉到很多网站都由于各种原因,要么不稳定,要么就干脆弃站了...
  • 在我这主题,找不到满意的位置放置这这句话~(毕竟拙于设计...)

现在发现,第一点完全是想多了,这个耗不了多少性能,一言 API 的速度还是非常棒的,对加载速度的影响基本可以忽略;另外,一言应该不会这么轻易放弃吧;再退一步讲,就算她放弃了,也还是有很多其他备用 API 的,或者启用张戈给的本地解决方案,实在不行,就去掉这个功能咯,也没啥大不了~

在这里,我也介绍下一言哈:

一言网(Hitokoto.cn)创立于 2016 年,隶属于萌创 Team,目前网站主要提供一句话服务。

动漫也好、小说也好、网络也好,不论在哪里,我们总会看到有那么一两个句子能穿透你的心。我们把这些句子汇聚起来,形成一言网络,以传递更多的感动。如果可以,我们希望我们没有停止服务的那一天。

简单来说,一言指的就是一句话,可以是动漫中的台词,也可以是网络上的各种小段子。
或是感动,或是开心,有或是单纯的回忆。来到这里,留下你所喜欢的那一句句话,与大家分享,这就是一言存在的目的。

对于第二点,我也是比较纠结的,放在滚动公告栏里或者放在文章末尾,我都觉得不是很得力;直到前阵子偶然在 devoted2 那看到了一个我非常喜欢的方式:评论框里(本站Dragon 主题已经自带集成了此功能,具体效果可以见本文评论框哦~)。

1 LWL12 的一言纯净版

在这里,先介绍一下 LWL12 的这个非常纯净的第三方 API 版本,仅显示一句话内容...,速度给力,食用方法也真的是简单粗暴~

直接将下面的代码放在自己主题想加载的位置就可以完事了...

<script type="text/javascript" src="https://api.lwl12.com/hitokoto/main/get?encode=js&charset=utf-8"></script><div id="lwlhitokoto"><script>lwlhitokoto()</script></div>

2 自建 API 版本

自建版的好处就是,api 及经典语句内容完全由自己管控;当然,缺点也很明显了,木有一言的语句多~~

2.1 创建 API

好了,直接开动了,首先,新建一个 index.php 文件,文件内容如下:

<?php
/**
 * WordPress 集成一言(Hitokoto)API 经典语句功能 - 龙笑天下
 * https://www.ilxtx.com/integrating-yiyan-hitokoto-to-wordpress.html
 */
// 获取句子文件的绝对路径
// 如果你介意别人可能会拖走这个文本,可以把文件名自定义一下,或者通过 Nginx 禁止拉取也行。
$path = dirname(__FILE__);
$file = file($path."/hitokoto.txt");
# 随机读取一行
$arr  = mt_rand( 0, count( $file ) - 1 );
$content  = trim($file[$arr]);
# 编码判断,用于输出相应的响应头部编码
if (isset($_GET['charset']) && !empty($_GET['charset'])) {
    $charset = $_GET['charset'];
    if (strcasecmp($charset,"gbk") == 0 ) {
        $content = mb_convert_encoding($content,'gbk', 'utf-8');
    }
} else {
    $charset = 'utf-8';
}
header("Content-Type: text/html; charset=$charset");
# 格式化判断,输出 js 或纯文本
if ($_GET['format'] === 'js') {
    echo "function hitokoto(){document.write('" . $content ."');}";
} else {
    echo $content;
}

然后新建一个名为 hitokoto.txt 的文本文档(在里面每行存入一句经典语句哦~),将 hitokoto.txt 文本文档与上面的 index.php 文件同时放入网站根目录下名为 hitokoto 的文件夹中,当然这里文本文档及文件夹的名称可以更改为其他任意名字,但是要将代码中对应调用部分也做更改。

现在,浏览器访问http://你的域名/hitokoto/就可以看到输出内容了。

2.2 使用 API

部署方法和上面那个基本一样:在主题代码中你需要显示语录文字的地方添加上如下代码既可以实现对 hitokoto.txt 中文字语录的调用。

<script type="text/javascript" src="https://你的域名/hitokoto/?format=js&charset=utf-8"></script><div id="hitokoto"><script>hitokoto()</script></div>

不过,输出的样式也和上面版本一样可能会比较丑,如果你懂 CSS 的话可以自己再美化美化。

3 一言官方 API 版

在这里,再来教大家一个使用一言官方 API 的方法~

首先,在主题 functions.php 中加入以下代码:

/**
 * WordPress 集成一言(Hitokoto)API 经典语句功能 - 龙笑天下
 * https://www.ilxtx.com/integrating-yiyan-hitokoto-to-wordpress.html
 * 最后更新:2018-5-2 22:48:09(一言已不支持 POST 获取,故改为 GET 方法获取,2018.8 会切换为 https://v2.hitokoto.cn/)
 */
function LxtxgetHitokoto(){
    $url = 'https://v1.hitokoto.cn/?encode=json'; // 不限定内容类型
    // $url = https://v1.hitokoto.cn/?encode=json&c=d'; // 限定内容类型
    $ch = curl_init();  
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查 SSL 加密算法是否存在
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 6);
    $response = curl_exec($ch);  
    if($error=curl_error($ch)){  
        return '欢迎来到龙笑天下~'; // 如果 6s 内,一言 API 调用失败则输出这个默认句子~
    }  
    curl_close($ch);
    $array_data = json_decode($response,true);
    $lxtx_content = $array_data['hitokoto'].'----《'.$array_data['from'].'》'; // 输出格式:经典语句----《语句出处》
    return $lxtx_content;
}

使用方法也非常简单粗暴,在主题文件中想输出橘子的地方加入以下输出代码即可,当然,你也可以跟龙笑天下一样放在文章的评论框哦~:

<?php echo LxtxgetHitokoto(); ?>

另外,再附上一言 API的返回参数:

返回参数名称 描述
id:本条一言的 id。可以链接到 https://hitokoto.cn?id=[id]查看这个一言的完整信息。
hitokoto:一言正文。编码方式 usc2。使用 utf-8。
type:类型,跟请求参数相同。a: Anime - 动画;b: Comic – 漫画;c: Game – 游戏;d: Novel – 小说;e: Myself – 原创;f: Internet – 来自网络;g: Other – 其他
from:一言的出处。
creator:添加者。
cearted_at:添加时间。

友情提示:大家可以根据返回参数自行修改上面的LxtxgetHitokoto()函数中的第 22 行,随意修改为自己想要的格式哦;另外,本文教程不局限与 wordpress~~

4 相关参考

Hitokoto - 一言
博客集成 Hitokoto·一言经典语句功能 - 张戈博客
LWL-Hitokoto API(一言-纯净 API)
php 使用 curl 访问 https 示例 | 孟坤博客

「点点赞赏,手留余香」

还没有人赞赏,快来当第一个赞赏的人吧!

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

龙笑天
龙笑天 关注:32    粉丝:36 最后编辑于:2020-07-29
互助分享,互联网本该如此!

发表评论

表情 贴图 链接 私密 格式 签到
最赞评论
  1. 懿古今
    懿古今 评论达人 LV.3 来自天朝的朋友 谷歌浏览器 55.0.2883.87 Windows 7 广东省广州市 电信

    这个放在评论框内的思路非常给力,不错,有空我也折腾试试。

  2. 一艘大轮船
    一艘大轮船 来自天朝的朋友 谷歌浏览器 40.0.2214.89  Android 5.1 OPPO R9m Build/LMY47I 河北省 移动数据上网公共出口

    大佬就是大佬,给出了这么多解决方案,完美!以后可以折腾一下!
    不过我这评论的表情出不来!用的 uc 浏览器。

  3. ZAERA
    ZAERA 来自天朝的朋友 谷歌浏览器 40.0.2214.89  Android 7.0 MI 5s Build/NRD90M 河南省 移动数据上网公共出口

    我把这个 API 代码直接粘贴到小工具里面了,懒得折腾了

  1. 乱码
    乱码 来自天朝的朋友 谷歌浏览器 70.0.3538.77 Windows 10 广东省深圳市南山区 电信

    Hello,我也开发了一个 关于古诗词的 一言 API,可以根据场景智能推荐。不知道博主有没兴趣看一看,我们还提供炒鸡方便的安装 SDK。一起学习哈哈。
    https://www.jinrishici.com

    13楼 2018-10-25 22:49
    0 0 回复
  2. 蒲公英
    蒲公英 来自天朝的朋友 谷歌浏览器 55.0.2883.87 Windows 10 浙江省温州市 联通

    给力,已用上。

    12楼 2018-06-17 13:45
    0 0 回复
  3. xianjie
    xianjie 来自天朝的朋友 火狐浏览器 59.0 Windows 10 广东省河源市 联通

    大佬,为什么我没有你这样的效果,我的评论框跟你的评论框是差不多的
    火狐截图 _2018-05-02T13-35-45

    11楼 2018-05-02 21:37
    0 0 回复
  4. 绿软库
    绿软库 来自天朝的朋友 谷歌浏览器 55.0.2883.87 Windows 7 福建省厦门市 电信

    感谢分享!@

    10楼 2018-01-22 16:06
    0 0 回复
  5. 趣知识 评论达人 LV.1 来自天朝的朋友 火狐浏览器 57.0 Windows 7 北京市 联通

    看上去很有意思!

    9楼 2018-01-06 18:35
    0 0 回复
  6. 小苍老师
    小苍老师 评论达人 LV.2 来自天朝的朋友 谷歌浏览器 55.0.2883.87 Windows 7 广东省佛山市 电信

    有空我也折腾下……

    8楼 2018-01-06 09:31
    0 0 回复
  7. 米粒博客
    米粒博客 来自天朝的朋友 谷歌浏览器 55.0.2883.96  Coolpad 8675-A Build/KTU84P 广东省 电信

    等周末折腾一番,感谢分享!

    7楼 2018-01-03 22:18
    0 0 回复
  8. 西枫里博客
    西枫里博客 评论达人 LV.3 来自天朝的朋友 搜狗浏览器 2.X Windows 7 上海市 联通

    原来一言在评论框里面。才发现。
    ps。日常签到并催更。。。

    6楼 2018-01-03 10:15
    0 0 回复
  9. 小萝博客
    小萝博客 评论达人 LV.1 来自天朝的朋友 谷歌浏览器 60.0.3112.78 Windows 10 江西省赣州市 电信

    会不会拖慢速度哦,大佬

    5楼 2017-12-29 21:46
    0 0 回复
  10. 晴和君
    晴和君 Taiwan; Republic of China (ROC) 谷歌浏览器 63.0.3239.108 Mac OS X 10_13_2 台湾省台北市 中华电信

    这个评论区好赞啊。怎么实现的?能分享吗?

    4楼 2017-12-29 19:01
    0 0 回复
  11. 一艘大轮船
    一艘大轮船 来自天朝的朋友 谷歌浏览器 40.0.2214.89  Android 5.1 OPPO R9m Build/LMY47I 河北省 移动数据上网公共出口

    大佬就是大佬,给出了这么多解决方案,完美!以后可以折腾一下!
    不过我这评论的表情出不来!用的 uc 浏览器。

    地板 2017-12-27 19:51
    3 0 回复
  12. ZAERA
    ZAERA 来自天朝的朋友 谷歌浏览器 40.0.2214.89  Android 7.0 MI 5s Build/NRD90M 河南省 移动数据上网公共出口

    我把这个 API 代码直接粘贴到小工具里面了,懒得折腾了

    板凳 2017-12-26 23:26
    3 0 回复
  13. 懿古今
    懿古今 评论达人 LV.3 来自天朝的朋友 谷歌浏览器 55.0.2883.87 Windows 7 广东省广州市 电信

    这个放在评论框内的思路非常给力,不错,有空我也折腾试试。

    沙发 2017-12-26 19:45
    4 0 回复
扫一扫二维码分享