做一個(gè)個(gè)人博客,如何展示自己收集或是喜歡的句子?做一個(gè)企業(yè)網(wǎng)站,如何展示自己的企業(yè)理念?也許在不經(jīng)意的某處,一言能幫上你。簡(jiǎn)單來(lái)說(shuō),一言指的就是一句話,留下你所喜歡的那一句句話,與大家分享,這就是一言存在的目的,這次的wordpress開發(fā)教你怎么添加一言功能。
什么是一言?
動(dòng)漫也好、小說(shuō)也好、網(wǎng)絡(luò)也好,不論在哪里,我們總會(huì)看到有那么一兩個(gè)句子能穿透你的心。我們把這些句子匯聚起來(lái),形成一言網(wǎng)絡(luò),以傳遞更多的感動(dòng)。如果可以,我們希望我們沒有停止服務(wù)的那一天。
簡(jiǎn)單來(lái)說(shuō),一言指的就是一句話,可以是動(dòng)漫中的臺(tái)詞,也可以是網(wǎng)絡(luò)上的各種小段子。 或是感動(dòng),或是開心,有或是單純的回憶。來(lái)到這里,留下你所喜歡的那一句句話,與大家分享,這就是一言存在的目的。
- 一言演示:Demo
打開上面的網(wǎng)址,每一次刷新頁(yè)面,中間的文本就會(huì)改變。

怎么添加?
- 一言官網(wǎng)
- 本地部署(推薦版)
- 本地部署(急速版)
- 本地部署(便捷版)
- 遠(yuǎn)程部署(極簡(jiǎn)版)
- 遠(yuǎn)程部署(豐富版)
- 遠(yuǎn)程部署(JS腳本)
- 本地部署PHP版(孟坤)
本地部署(推薦版)
- 代碼來(lái)源:詳情
請(qǐng)您在主題根目錄下的 functions.php
文件下的 <?php
下添加以下代碼:
/**
* 本地一言
*/
function lifet_yiyan () {
function random_str () {
$poems="Npcink致力于促進(jìn)廣大站長(zhǎng)成長(zhǎng)
找wordpress主題,就來(lái)Npcink
找wordpress主題,也來(lái)Npcink";
$poems=explode("\n",$poems);
return $poems[rand(0,count($poems)-1)];
}
echo random_str();
}
調(diào)用:
請(qǐng)?jiān)谀枰{(diào)用一言的地方添加以下代碼調(diào)用:
<?php lifet_yiyan();?>
注意:請(qǐng)您自定義您的樣式。
本地部署(極速版)
在主題根目錄下的 inc
文件夾下新建 saying
文件夾,下載本頁(yè)底部提供的 hitokoto
壓縮包,解壓后添加至上方創(chuàng)建的saying
文件夾。
在主題根目錄下的 functions.php
文件下的 <?php
下添加以下代碼:
/*
* 加載極速版一言
*/
require ( get_template_directory() . '/inc/saying/hitokoto.php' );
調(diào)用:
在您需要展示一言的地方添加以下代碼調(diào)用:
<?php hitokoto(); ?>
本地部署(便捷版)
- 原文:詳情
一言官網(wǎng)API遠(yuǎn)程部署:
此方法很省事,而且言論的質(zhì)量很高,但可能會(huì)在一定程度上影響網(wǎng)站加載速度
遠(yuǎn)程部署(極簡(jiǎn)版):
- 來(lái)源:劉榮煥
在你需要添加一言顯示的地方添加以下代碼即可。
<?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”為字?jǐn)?shù)限制,推薦為140.
遠(yuǎn)程部署(豐富版,不可用)
- 來(lái)源:詳情
在主題根目錄下的 functions.php
文件的 <?php
下添加以下代碼:
// WordPress集成一言(Hitokoto)API經(jīng)典語(yǔ)句功能
function LxtxgetHitokoto(){
$url = 'https://sslapi.hitokoto.cn/'; //url后綴可通過c字段限定返回語(yǔ)句類型,類型詳見下方表格。
$data = array(
// 'c'=>'d', // 限定內(nèi)容類型
'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 '歡迎來(lái)到堵文斐的個(gè)人博客~'; // 如果6s內(nèi),一言API調(diào)用失敗則輸出這個(gè)默認(rèn)句子~
}
curl_close($ch);
$array_data = json_decode($response,true);
$lxtx_content = $array_data['hitokoto'].'----《'.$array_data['from'].'》'; // 輸出格式:經(jīng)典語(yǔ)句----《語(yǔ)句出處》
return $lxtx_content;
}
// 如果獲取不到一言內(nèi)容,返回301永久重定向,在上述代碼中添加curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1); 直接抓取跳轉(zhuǎn)的頁(yè)面即可解決。
在需要展示的位置添加以下代碼調(diào)用:
<?php echo LxtxgetHitokoto(); ?>
一言API的返回參數(shù):
- id:本條一言的id,可以鏈接到 https://hitokoto.cn?id=[id] 查看這個(gè)一言的完整信息。
- hitokoto:一言正文,編碼方式 usc2,使用 utf-8。
- type:類型,跟請(qǐng)求參數(shù)相同。a: Anime - 動(dòng)畫;b: Comic – 漫畫;c: Game – 游戲;d: Novel – 小說(shuō);e: Myself – 原創(chuàng);f: Internet – 來(lái)自網(wǎng)絡(luò);g: Other – 其他
- from:一言的出處。
- creator:添加者。
- cearted_at:添加時(shí)間。
遠(yuǎn)程部署(JS腳本版)
- 來(lái)源:詳情
首先,在主題根目錄下的 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('獲取出錯(cuò)!');
}
});
</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>
在需要展示的地方添加以下代碼調(diào)用:
<div class='hitokoto'></div>
本地部署PHP版(非wordpress)
存儲(chǔ)數(shù)據(jù)文件:本頁(yè)頁(yè)底(data)
file_get_contents
?函數(shù)實(shí)現(xiàn)版:
<?php
// 存儲(chǔ)數(shù)據(jù)的文件
$filename = 'data.dat';
// 指定頁(yè)面編碼
header('Content-type: text/html; charset=utf-8');
if(!file_exists($filename)) {
die($filename . ' 數(shù)據(jù)文件不存在');
}
// 讀取整個(gè)數(shù)據(jù)文件
$data = file_get_contents($filename);
// 按換行符分割成數(shù)組
$data = explode(PHP_EOL, $data);
// 隨機(jī)獲取一行索引
$result = $data[array_rand($data)];
// 去除多余的換行符(保險(xiǎn)起見)
$result = str_replace(array("\r","\n","\r\n"), '', $result);
echo $result;
如何在靜態(tài)頁(yè)面中引用
上面的代碼都是直接在頁(yè)面中就輸出了隨機(jī)的句子。如果想像一言那樣在靜態(tài)的網(wǎng)頁(yè)中引用這個(gè) api,該如何實(shí)現(xiàn)呢?
很簡(jiǎn)單,將最后那一行的?echo $result;
?換成
echo 'document.write("'.htmlspecialchars($result).'");';
然后在需要的位置用引入 js 的方式進(jìn)行調(diào)用即可。
示例代碼:
<script src="http://yourwebsite.com/api.php"></script>
本地部署便捷版 不顯示結(jié)果,控制臺(tái)報(bào)錯(cuò) Uncaught TypeError: hitokoto is not a function at (index):198
感謝您的反饋,經(jīng)測(cè)試發(fā)現(xiàn),該代碼確實(shí)無(wú)效,抱歉了。
由于已經(jīng)有了其他便捷的解決方案,也可供您參考。
是說(shuō)的 遠(yuǎn)程部署(JS腳本版)這個(gè)嗎,這個(gè)我試了是有效的,就是不能自定義想要的句子 ?笑哭了?
也可以看看其他的版本嘛