我在很多博客网站看到都有添加每日一句、随机语录等经典语句功能,我曾经是想给自己的博客加上这个功能的,但是考虑到增加这个功能,网站就要向Hitokoto (一言) 发出请求再返回数据,自己又不知道Hitokoto (一言) 的响应速度和稳定性是否经得起考验,这就可能会影响网站的加载速度及性能,就想着多观察跟踪一下Hitokoto (一言) 的后续发展情况,所以也就一直也没有添加这个功能。
经过一年多时间的观察,这期间也发现越来越多的网站开始添加这类功能,然后看了很多站长对 Hitokoto 的评测文章,发现可能是自己想多了,Hitokoto 这个插件耗不了多少性能,一言 API 的速度还是不错的,对加载速度的影响基本可以忽略。另外,就算 Hitokoto 哪天停止服务了,也看到 张戈 已经给出了本地解决方案,实在不行,就去掉这个功能,也没啥大不了。
在这里,简单介绍下Hitokoto(一言):
一言网(Hitokoto.cn)创立于 2016 年,隶属于萌创 Team,目前网站主要提供一句话服务。
用句通俗一点的话来说,Hitokoto (一言)就好似一个公开的摘抄本,我们在此记录那些让人感怀的,让人振奋的,让人感动的,让人一眼就有所感触的短句,并通过公共 API 的形式使你能够在自己的项目中调用它们。
给网站添加 Hitokoto (一言)功能的方法
一、LWL12 的一言纯净版
在这里,先介绍一下一个博客博主 LWL12 的这个非常纯净的第三方 API 版本,仅显示一句话内容,速度也不错,调用方法也很简单。直接将下面的代码放在自己网站主题想加载的位置就可以完事了。
<script type=”text/javascript” src=”https://api.lwl12.com/hitokoto/v1?encode=js&charset=utf-8″></script><span id=”lwlhitokoto”><script>lwlhitokoto()</script></span>
这是一个最简单的调用实例,但我并不推荐您使用这一方法,使用 Ajax 技术异步请求 JsonP 或 Json 接口会是更好的选择。
二、自建 API 版本
如果您感觉调用 Hitokoto 官方API或者第三方的API不能自定义的话,那么自建 API 就是比较好的选择,首先 API 以及语句内容完全由自己管控。如果说缺点的话,就是您自建 API 的语句是需要自己去完善增加,随机展示的话也没有 Hitokoto 的语句多。
1、创建 API
首先,新建一个 index.php 文件,文件内容如下:
<?php
/**
* WordPress 集成一言(Hitokoto)API 经典语句功能
*/
// 获取句子文件的绝对路径
// 如果你介意别人可能会拖走这个文本,可以把文件名自定义一下,或者通过 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;
}
2、创建语句内容文件
接下来,您需要新建一个名为 hitokoto.txt 的文本文档,在里面每行存入一句语句内容,保存后将 hitokoto.txt 文本文档与上面的 index.php 文件同时放入网站根目录下名为 hitokoto 的文件夹中,当然这里文本文档及文件夹的名称可以更改为其他任意名字,但是要将代码中对应调用部分也做更改。
然后,您可以再浏览器访问 http://你的域名/hitokoto/ 来测试是否正常运行,正常操作的话,您已经可以看到输出内容了。
3、调用 API 部署代码
这里的调用 API 部署方法和前面那个基本一样,在主题代码中你需要显示语录文字的地方添加上如下代码既可以实现对 hitokoto.txt 中文字语录的调用。
<script type=”text/javascript” src=”https://你的域名/hitokoto/?format=js&charset=utf-8″></script><div id=”hitokoto”><script>hitokoto()</script></div>
不过,默认输出的样式可能会比较丑,如果你懂 CSS 的话可以自己再美化一下。如果实在是不懂,您可以用下面的CSS代码,根据自己的情况进行调整。
#hitokoto{
border-left: 5px solid #2f889a;
border-right: 5px solid #2f889a;
background-color: #ebebeb;
padding: 10px;text-align: center;
color: #095AD4;
margin: 5px 0 5px 0;
}
三、一言官方 API 版
除了上面两种方法之外,一言官方也给出了 API 接口,我们也可以采取直接调用官方API接口来部署。
首先,在主题 functions.php 中加入以下代码:
/**
* WordPress 集成一言(Hitokoto)
* 最后更新:2020-12-5 (一言于2020年10月6日发布了语句接口的 1.6.0 版本)
* Github:https://github.com/hitokoto-osc/hitokoto-api/releases
*/
function funggetHitokoto(){
$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);
$fung_content = $array_data[‘hitokoto’].’—-《’.$array_data[‘from’].’》’; // 输出格式:经典语句—-《语句出处》
return $fung_content;
}
使用方法也非常简单,在主题文件中想输出语句内容的地方加入以下输出代码即可,我看到有人把输出内容放在放在文章的评论框,感觉效果不错!
<?php echo funggetHitokoto(); ?>
四、扩展说明
一言 (Hitokoto) 官方最近开始了新一轮的更新,在官方的 Github 也提供了语句接口的1.6.0版本,开发者中心提供了比较详细的一些说明,比如 API 返回参数,有兴趣的可以在去了解一下,方便对前面的代码进行扩展自定义。
一言 (Hitokoto) 开发者中心:https://developer.hitokoto.cn/
一言 (Hitokoto)官方Github地址:https://github.com/hitokoto-osc
好了,关于网站集成一言 (Hitokoto)经典语录功能就介绍这么多,上面的方法并不局限于 WordPress 程序,您也可以在其他的程序上运用,喜欢的朋友可以试下了。
评论前必须登录!
立即登录 注册