WordPress集成一言(Hitokoto)API经典语句

如何让你的 wordpress 更显文艺范?其实就是在文章内容后面随机显示一行比较有文艺范的文字,具体效果如下图所示,蓝色字体内容每次刷新都会随机更换一次,显示不同的文字。

一言网(Hitokoto.cn)创立于2016年,隶属于萌创 Team,目前网站主要提供一句话服务。动漫也好、小说也好、网络也好,不论在哪里,我们总会看到有那么一两个句子能穿透你的心。我们把这些句子汇聚起来,形成一言网络,以传递更多的感动。如果可以,我们希望我们没有停止服务的那一天。简单来说,一言指的就是一句话,可以是动漫中的台词,也可以是网络上的各种小段子。或是感动,或是开心,有或是单纯的回忆。来到这里,留下你所喜欢的那一句句话,与大家分享,这就是一言存在的目的。

要实现这样的效果总共有两种方法,选择哪种方法自己决定:

一言官方 API版

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

// WordPress集成一言(Hitokoto)API经典语句功能
function LxtxgetHitokoto(){
    $url = 'https://sslapi.hitokoto.cn/'; // http://api.hitokoto.cn/
    $data = array(
        // 'c'=>'d', // 限定内容类型
        'encode'=>'json'
    );
    $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_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
    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()函数中的第24行,随意修改为自己想要的格式哦;另外,本文教程不局限于 WordPress ~~

自建 API 版本

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

  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']) && !emptyempty($_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. 使用 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 参考,只需要将其添加到主题下的 style.css 里即可

#lwlhitokoto {
    background-color: #f0f8ff;
    padding: 10px;
    text-align: center;
    color: #095AD4;
    margin: 5px 0 5px 0;
    border-radius: 2px;
}
© 版权声明
THE END
喜欢就支持一下吧
点赞8赞赏
分享
评论 抢沙发

请登录后发表评论