怎么添加一言功能? - WordPress开发

简单来说,一言指的就是一句话,留下你所喜欢的那一句句话,与大家分享,这就是一言存在的目的,这次的wordpress开发教你怎么添加一言功能

做一个个人博客,如何展示自己收集或是喜欢的句子?做一个企业网站,如何展示自己的企业理念?也许在不经意的某处,一言能帮上你。简单来说,一言指的就是一句话,留下你所喜欢的那一句句话,与大家分享,这就是一言存在的目的,这次的wordpress开发教你怎么添加一言功能。

什么是一言?

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

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

打开上面的网址,每一次刷新页面,中间的文本就会改变。

怎么添加一言功能? - WordPress开发

怎么添加?

  • 一言官网
  • 本地部署(推荐版)
  • 本地部署(急速版)
  • 本地部署(便捷版)
  • 远程部署(极简版)
  • 远程部署(丰富版)
  • 远程部署(JS脚本)
  • 本地部署PHP版(孟坤)

本地部署(推荐版)

请您在主题根目录下的 functions.php 文件下的 <?php 下添加以下代码:

/**
 * 本地一言
 */
	function lifet_yiyan () {

    function random_str () {
    	$poems="Npcink致力于促进广大站长成长
    	找wordpress主题,就来Npcink
    	找wordpress主题,也来Npcink";
    	$poems=explode("\n",$poems);
    	return $poems[rand(0,count($poems)-1)];
    	}
    
    	echo random_str();
    
    }

调用:

请在您需要调用一言的地方添加以下代码调用:

<?php lifet_yiyan();?>

注意:请您自定义您的样式。

本地部署(极速版)

在主题根目录下的 inc 文件夹下新建 saying 文件夹,下载本页底部提供的 hitokoto 压缩包,解压后添加至上方创建的saying 文件夹。

在主题根目录下的 functions.php 文件下的 <?php 下添加以下代码:

/*
 * 加载极速版一言
 */
require ( get_template_directory() . '/inc/saying/hitokoto.php' );

调用:

在您需要展示一言的地方添加以下代码调用:

<?php hitokoto(); ?>

本地部署(便捷版)

一言官网API远程部署:

此方法很省事,而且言论的质量很高,但可能会在一定程度上影响网站加载速度

远程部署(极简版):

在你需要添加一言显示的地方添加以下代码即可。

<?php
    $url = "https://v1.hitokoto.cn";
    $json_date=file_get_contents($url);
    $date=json_decode($json_date, true);       
    echo wp_trim_words($date["hitokoto"], 140 )
?>

第5行的“140”为字数限制,推荐为140.

远程部署(丰富版,不可用)

在主题根目录下的 functions.php 文件的 <?php 下添加以下代码:

// WordPress集成一言(Hitokoto)API经典语句功能
function LxtxgetHitokoto(){
    $url = 'https://sslapi.hitokoto.cn/';  //url后缀可通过c字段限定返回语句类型,类型详见下方表格。
    $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;
}

// 如果获取不到一言内容,返回301永久重定向,在上述代码中添加curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1); 直接抓取跳转的页面即可解决。

在需要展示的位置添加以下代码调用:

<?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:添加时间。

远程部署(JS脚本版)

首先,在主题根目录下的 footer.php 底部 </body> 前添加以下代码

//引入jquery
<script type="text/javascript" src="http://libs.baidu.com/jquery/1.8.3/jquery.min.js"></script>
//添加js
<script type='text/javascript'>
$.get("https://v1.hitokoto.cn/",function(data,status){
  if (status == 'success'){
    $('.hitokoto').text(data.hitokoto);
  }else{
    $('.hitokoto').text('获取出错!');
  }
});
</script>
//添加样式
<style type="text/css">
.hitokoto{
    border-left: 5px solid #61B3E6;
    border-right: 5px solid #61B3E6;
    background-color: #ebebeb;
    padding: 10px;text-align: left;
    color: #095AD4;
    margin: 5px 0 5px 0;
}
</style>

在需要展示的地方添加以下代码调用:

<div class='hitokoto'></div>

本地部署PHP版(非wordpress)

存储数据文件:本页页底(data)

file_get_contents 函数实现版:

<?php
// 存储数据的文件
$filename = 'data.dat';        
 
// 指定页面编码
header('Content-type: text/html; charset=utf-8');
 
if(!file_exists($filename)) {
    die($filename . ' 数据文件不存在');
}
 
// 读取整个数据文件
$data = file_get_contents($filename);
 
// 按换行符分割成数组
$data = explode(PHP_EOL, $data);
 
// 随机获取一行索引
$result = $data[array_rand($data)];
 
// 去除多余的换行符(保险起见)
$result = str_replace(array("\r","\n","\r\n"), '', $result);
 
echo $result;

如何在静态页面中引用

上面的代码都是直接在页面中就输出了随机的句子。如果想像一言那样在静态的网页中引用这个 api,该如何实现呢?

很简单,将最后那一行的 echo $result; 换成

echo 'document.write("'.htmlspecialchars($result).'");';

然后在需要的位置用引入 js 的方式进行调用即可。

示例代码:

<script src="http://yourwebsite.com/api.php"></script>

下载权限

查看
  • 免费下载
    评论并刷新后下载
    登录后下载

查看演示

  • {{attr.name}}:
您当前的等级为
登录后免费下载登录 小黑屋反思中,不准下载! 评论后刷新页面下载评论 支付以后下载 请先登录 您今天的下载次数(次)用完了,请明天再来 支付积分以后下载立即支付 支付以后下载立即支付 您当前的用户组不允许下载升级会员
您已获得下载权限 您可以每天下载资源次,今日剩余
Typecho

Moricolor - 森之色Typecho主题

2020-1-30 23:57:00

插件

Breadcrumb NavXT - wordpress面包屑插件

2020-3-25 23:08:54

⚠️
Npcink上的部份代码及教程来源于互联网,仅供网友学习交流,若您喜欢本文可附上原文链接随意转载。
无意侵害您的权益,请发送邮件至 1355471563#qq.com 或点击右侧 私信:Muze 反馈,我们将尽快处理。
4 条回复 A文章作者 M管理员
  1. 本地部署便捷版 不显示结果,控制台报错 Uncaught TypeError: hitokoto is not a function at (index):198

    • 感谢您的反馈,经测试发现,该代码确实无效,抱歉了。
      由于已经有了其他便捷的解决方案,也可供您参考。

    • Muze

      是说的 远程部署(JS脚本版)这个吗,这个我试了是有效的,就是不能自定义想要的句子 ✗笑哭了✗

    • 也可以看看其他的版本嘛

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索