【加密社】如何創建自己的幣圈工具站

需要準備的工作

1.域名

2.服務器

周末的時候主要弄了快訊這方面的代碼

我這里用的是星球日報的api,也可以訂閱他們的rss,這部分在github上是開源的

https://github.com/ODAILY

我這里用的是WordPress+onenav主題,然后用小工具在主頁展示,

具體代碼如下,小工具里自定義代碼輸入短代碼[qklnews]

// 定義短代碼以展示快訊消息
function qklnews_shortcode() {// 調用fetch_qklnews_data函數獲取快訊消息$data = fetch_qklnews_data();if (!$data || !isset($data['newslist']) || empty($data['newslist'])) {return '<div style="font-family: Arial, sans-serif; color: red;">無法加載快訊,請稍后重試。</div>';}// 準備HTML結構ob_start(); // 開啟輸出緩沖?><div id="qklnews-container" class="qklnews-container"><!-- 內聯CSS --><style>.qklnews-container {font-family: Arial, sans-serif;margin-bottom: 20px;padding-left: 10px; /* 整體內容向右偏移 */position: relative;text-align: center; /* 居中對齊容器內容 */}.timeline {position: absolute;left: 9px; /* 時間軸向左移動 10px */top: 20px; /* 時間線起點與第一條數據的圓點對齊 */width: 2px;background-color: #ddd;height: calc(100% - 40px); /* 時間線高度為新聞項總高度減去上下間距 */}.timeline-dot {position: absolute;left: -5px; /* 圓點向左移動 10px */top: 10px; /* 每個圓點的位置基于新聞項 */width: 10px;height: 10px;background-color: #999;border-radius: 50%;}.news-list {list-style-type: none;padding: 0;margin-top: 20px; /* 第一條數據與時間軸頂部的距離 */text-align: left; /* 新聞項內容左對齊 */}.news-item {margin-bottom: 20px;position: relative;padding-left: 20px;margin-right: 20px; /* 每條數據右側留出距離 */}.title {font-size: 14px; /* 主內容字號 */color: #333;text-decoration: none;display: block;margin-bottom: 5px;}.details {display: flex;justify-content: space-between;align-items: center;font-size: 14px; /* 快訊和日期字號 */color: #999;}.subtitle {background-color: #f5f5f5;padding: 2px 5px;border-radius: 3px;margin-right: 10px;}.date {margin-left: auto;}.view-more-btn {display: inline-block;margin-top: 20px;padding: 8px 16px; /* 按鈕更小 */font-size: 14px; /* 字體更小 */color: #fff;background-color: #a98622;text-decoration: none;border-radius: 5px;text-align: center;transition: background-color 0.3s ease;}.view-more-btn:hover {background-color: #005177;}</style><!-- 時間軸 --><div class="timeline"></div><ul class="news-list"><?php // 限制只顯示前 6 條新聞$limited_news = array_slice($data['newslist'], 0, 6);foreach ($limited_news as $item): ?><li class="news-item"><!-- 時間軸圓點 --><div class="timeline-dot"></div><a href="<?php echo esc_url($item['news_url']); ?>" target="_blank" class="title"><?php echo esc_html($item['title']); ?></a><div class="details"><span class="subtitle">快訊</span><span class="date"><?php // 顯示日期和時間(年-月-日 時:分)echo esc_html(date('Y年m月d日 H:i', strtotime($item['published_at'])));?></span></div></li><?php endforeach; ?></ul><!-- 查看更多按鈕 --><a href="https://bqbot.cn/7x24%e5%bf%ab%e8%ae%af" target="_blank" class="view-more-btn">查看更多</a></div><?phpreturn ob_get_clean(); // 返回生成的HTML
}
add_shortcode('qklnews', 'qklnews_shortcode'); // 注冊短代碼 [qklnews]// 讓文本小工具支持短代碼
add_filter('widget_text', 'do_shortcode');

這里需要注意的是,快訊中帶圖片的部分,是cdn服務器上的靜態資源,他會限制別的網站直接去訪問,比如你如果是直接把接口返回的imgurl嵌入到你的img標簽中,他會報403

這里需要使用圖片代理

function custom_image_proxy() {if (isset($_GET['custom_proxy']) && isset($_GET['url'])) {$image_url = urldecode($_GET['url']); // 解碼URL// 確保只轉發到允許的域名$allowed_domains = ['https://piccdn.0daily.com'];$parsed_url = parse_url($image_url);$scheme_and_host = $parsed_url['scheme'] . '://' . $parsed_url['host'];if (!in_array($scheme_and_host, $allowed_domains)) {status_header(403);echo "Forbidden";exit;}// 模擬瀏覽器請求頭$response = wp_remote_get($image_url, ['headers' => ['User-Agent'      => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36','Referer'         => 'https://www.odaily.news/', // 設置正確的 Referer'Accept'          => 'image/webp,image/apng,image/*,*/*;q=0.8','Accept-Encoding' => 'gzip, deflate, br','Accept-Language' => 'en-US,en;q=0.9',],'decompress' => true, // 自動解壓縮 Gzip 數據]);// 檢查請求是否成功if (is_wp_error($response)) {error_log('WP HTTP Error: ' . $response->get_error_message());status_header(500);echo "Internal Server Error";exit;}$status_code = wp_remote_retrieve_response_code($response);if ($status_code != 200) {error_log("Response Status Code: $status_code");status_header($status_code);echo "Error fetching image";exit;}// 獲取并輸出圖片內容ob_clean(); // 清除之前的輸出緩沖區flush();    // 刷新系統輸出緩沖// 設置正確的 Content-Type$content_type = wp_remote_retrieve_header($response, 'content-type');header("Content-Type: $content_type");// 輸出圖片數據echo wp_remote_retrieve_body($response);exit;}
}
add_action('template_redirect', 'custom_image_proxy');

具體演示數據可以看到?幣圈工具站 | 幣圈導航

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/74674.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/74674.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/74674.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Docker學習筆記(十一)宿主機無法鏈接宿主機問題處理

故障排查優先級排序 服務狀態 → 2. 端口監聽 → 3. 防火墻 → 4. 權限配置 → 5. 網絡路由 &#xff08;按此順序可覆蓋95%的常見問題?15&#xff09; mysql鏡像啟動命令&#xff1a; docker run -p 3306:3306 --restartalways --name mysqlv8 -e MYSQL_ROOT_PASSWORDCd…

力扣:回溯算法

組合I class Solution {List<List<Integer>> result new ArrayList(); // 所有結果集List<Integer> list new ArrayList(); // 當前結果集public List<List<Integer>> combine(int n, int k) {dfs(n, k, 1);return result;}public void dfs(i…

華為HCIE鴻蒙應用開發認證靠譜嗎?

在萬物互聯時代&#xff0c;智能終端設備的多樣性與協同需求催生了操作系統的革新。華為HarmonyOS&#xff08;鴻蒙系統&#xff09;憑借其分布式架構與全場景能力&#xff0c;正成為打破設備邊界、重塑用戶體驗的核心技術底座。HCIE鴻蒙應用開發認證作為華為認證體系的頂級資質…

23種設計模式-原型(Prototype)設計模式

原型設計模式 &#x1f6a9;什么是原型設計模式&#xff1f;&#x1f6a9;原型設計模式的特點&#x1f6a9;原型設計模式的結構&#x1f6a9;原型設計模式的優缺點&#x1f6a9;原型設計模式的Java實現&#x1f6a9;代碼總結&#x1f6a9;總結 &#x1f6a9;什么是原型設計模式…

Oracle-rman restore遭遇RMAN-03002與ORA-19563

文章目錄 在原DB上檢查是否有重復的文件名&#xff1a;查看rman恢復的日志修正重名部分重新執行rman恢復結論&#xff1a; 在 RMAN 恢復過程中&#xff0c;遇到RMAN-03002連同ORA-19563:錯誤。 操作是將 Oracle 10.0.5的數據庫備份從 RMAN備份恢復到另一臺測試主機的同一個目錄…

運維網絡排查工具介紹與使用

作為一名運維工程師&#xff0c;日常工作中最令人頭疼的莫過于各種網絡故障。在過去一年半的運維生涯中&#xff0c;我積累了豐富的網絡故障排查經驗&#xff0c;今天就來和大家分享一下如何運用抓包工具&#xff08;Wireshark、tcpdump&#xff09;和網絡排查工具&#xff08;…

解決vscode終端和本地終端python版本不一致的問題

&#x1f33f; 問題描述 本地終端&#xff1a; vscode終端&#xff1a; 別被這個給騙了&#xff0c;繼續往下看&#xff1a; 難怪我導入一些包的時候老提示找不到&#xff0c;在本地終端就不會這樣&#xff0c;于是我嚴重懷疑vscode中的python版本和終端不一樣&#xff0c…

Sublime全局搜索快捷鍵Ctrl+Shift+F不能使用解決

問題描述&#xff1a; 在安裝好Sublime后&#xff0c;我們使用快捷鍵進行全局搜索&#xff0c;發現沒有反應&#xff0c;但是中文輸入變成了繁體。 解決方案&#xff1a; 如截圖&#xff0c;在關閉簡繁切換的快捷鍵或者換成其他的就行

海康HTTP監聽報警事件數據

http監聽接收報警事件數據 海康獲取設備報警事件數據兩種方式&#xff1a; 1、sdk 布防監聽報警事件數據,服務端布防。&#xff08;前面文章有示例&#xff09; 2、http監聽接收報警事件數據&#xff0c;設備直接推送。 http監聽接收報警事件數據&#xff0c;服務端可以使用n…

Python----計算機視覺處理(Opencv:圖像邊緣檢測:非極大值抑制,雙閾值篩選)

一、 高斯濾波 邊緣檢測本身屬于銳化操作&#xff0c;對噪點比較敏感&#xff0c;所以需要進行平滑處理。這里使用的是一個5*5的高斯 核對圖像進行消除噪聲。 二、計算圖像的梯度和方向 三、非極大值抑制 在得到每個邊緣的方向之后&#xff0c;其實把它們連起來邊緣檢測就算完了…

Maven工具學習使用(四)——倉庫

倉庫分類 對于Mavne來說,倉庫只分為兩類:本地倉庫和遠程倉庫。當Maven根據坐標查詢尋找構件的時候,它首先會查看本地倉庫,如果本地倉庫存在此構件,則直接使用;如果本地倉庫不存在此構件,或者需要查看是否有更新的構件版本,Maven就會去遠程倉庫查找,發現需要的構件之后…

Axure PR 9.0(發音:Ack-sure)原型圖工具入門教程:鏈接交互

文章目錄 引言Axure? RP 9I Axure RP9入門介紹元件庫對兩個元件進行連接頁面:導航視圖、概要母版交互II 鏈接交互從A頁面跳轉到B頁面返回之前的頁面see also引言 【 產品原型圖】核心價值和實際應用場景:可視化需求,統一團隊理解 https://blog.csdn.net/z929118967/articl…

docker遠程debug

1. 修改 Java 啟動命令 在 Docker 容器中啟動 Java 程序時&#xff0c;需要添加 JVM 調試參數&#xff0c;jdk8以上版本 java -agentlib:jdwptransportdt_socket,servery,suspendn,address*:5005 -jar your-app.jar jdk8及以下版本&#xff1a; java -Xdebug -Xrunjdwp:tra…

K8S學習之基礎五十四:jenkins新建測試流水線

jenkins新建測試流水線 新建任務 node(testak) {stage(第1步:從gitee上下載源代碼) {git url: "https://gitee.com/akang007/jenkins-sample"script {build_tag sh(returnStdout: true, script: git rev-parse --short HEAD).trim()}}stage(第2步&#xff1a;基…

SylixOS 中 select 原理及使用分析

1、select接口簡介 1.1 select接口使用用例 select 是操作系統多路 I/O 復用技術實現的方式之一。 select 函數允許程序監視多個文件描述符&#xff0c;等待所監視的一個或者多個文件描述符變為“準備好”的狀態。所謂的”準備好“狀態是指&#xff1a;文件描述符不再是阻塞狀…

Spring WebFlux之ServerWebExchange

ServerWebExchange 是 Spring WebFlux 中的一個核心接口&#xff0c;用于表示服務器端處理的 HTTP 請求和響應。它封裝了請求和響應的所有信息&#xff0c;并提供了相應的方法來操作這些信息。ServerWebExchange 在響應式編程模型中扮演著關鍵角色&#xff0c;支持非阻塞、異步…

Flutter 常見錯誤和坑

1. 狀態管理問題 StatefulWidget 生命周期誤用 // 錯誤&#xff1a;在 build 方法中修改狀態 override Widget build(BuildContext context) {setState(() { counter; }); // 會導致無限重建循環return Text($counter); }// 正確&#xff1a;在事件處理中修改狀態 Widget bui…

C++智能指針萬字詳細講解(包含智能指針的模擬實現)

在筆試&#xff0c;面試中智能指針經常出現&#xff0c;如果你對智能指針的作用&#xff0c;原理&#xff0c;用法不了解&#xff0c;那么可以看看這篇博客講解&#xff0c;此外本博客還簡單模擬實現了各種指針&#xff0c;在本篇的最后還應對面試題對智能指針的知識點進行了拓…

【Go】Go語言結構體筆記

整體介紹 雖然 Go 語言不是傳統意義上的面向對象語言&#xff0c;但它提供了結構體&#xff08;struct&#xff09;來組織數據&#xff0c;并且可以為結構體綁定方法&#xff0c;從而達到面向對象的部分效果。 關鍵知識點包括&#xff1a; 結構體定義與實例化 定義結構體時使用…

Three.js 快速入門教程【十八】射線拾取模型——鼠標點擊屏幕選中模型或物體

系列文章目錄 Three.js 快速入門教程【一】開啟你的 3D Web 開發之旅 Three.js 快速入門教程【二】透視投影相機 Three.js 快速入門教程【三】渲染器 Three.js 快速入門教程【四】三維坐標系 Three.js 快速入門教程【五】動畫渲染循環 Three.js 快速入門教程【六】相機控件 Or…