banner
段先森

三无青年

己所不欲,勿施于人
telegram
twitter
follow
email

如何在 WordPress 首頁顯示 Memos 最新動態

準備工作#

確保已安裝 WordPress 並啟用了適合的主題:以我的主題為例,適用於大多數 WordPress 主題。

獲取 Memos 的 RSS 訂閱地址:比如我的鏈接為 https://memos.duanxiansen.com/u/1/rss.xml, 根據你的 Memos 實際 RSS 鏈接替換。

編寫函數獲取 Memos 最新動態#

需要編寫一個函數,使用 WordPress 的 wp_remote_get () 函數從 RSS 鏈接獲取數據,並解析出最新的一條動態。

首先,打開 WordPress 主題目錄中的 functions.php 文件,添加以下代碼:

// 獲取 Memos 最新一條動態並顯示
function display_latest_memo() {
    // 通過 wp_remote_get 獲取 RSS 數據
    $response = wp_remote_get('https://memos.duanxiansen.com/u/1/rss.xml'); // 替換為你的 Memos RSS 網址
    if (is_wp_error($response)) {
        return '無法獲取 Memos 數據';
    }

    // 獲取響應的主體內容
    $body = wp_remote_retrieve_body($response);

    // 將 RSS 數據解析為 XML
    $data = simplexml_load_string($body);

    // 檢查返回的數據是否為空
    if (empty($data) || !isset($data->channel->item[0])) {
        return '沒有找到最新的 Memos 動態';
    }

    // 獲取最新一條動態
    $latest_memo = $data->channel->item[0];

    // 將 RSS 中的時間轉換為 WordPress 時區時間
    $rss_date = (string)$latest_memo->pubDate; // 獲取 RSS 中的發佈時間

    // 創建 DateTime 對象並設置為 RSS 的時間
    $date = new DateTime($rss_date);

    // 將時間轉換為 WordPress 時區
    $date->setTimezone(new DateTimeZone(get_option('timezone_string')));

    // 格式化時間為 Y-m-d H:i:s 格式
    $formatted_date = $date->format('Y-m-d H:i:s');

    // 獲取描述內容(通常是動態的主要內容)
    $content = (string)$latest_memo->description;

    // 限制字數(例如,顯示最多300個字符)
    $excerpt = mb_substr($content, 0, 300);
    if (mb_strlen($content) > 300) {
        $excerpt .= '... <a href="' . esc_url($latest_memo->link) . '" target="_blank">閱讀更多</a>'; // 鏈接到原文
    } else {
        $excerpt .= ' <a href="' . esc_url($latest_memo->link) . '" target="_blank">查看原文</a>'; // 如果字數較短,顯示“查看原文”
    }

    // 輸出最新動態的內容、時間和鏈接
    $output = '<div class="latest-memo memos-center">';
    $output .= '<h3>最新動態:</h3>';
    $output .= '<p>' . $excerpt . '</p>';
    $output .= '<p>時間:' . esc_html($formatted_date) . '</p>';
    $output .= '</div>';

    return $output;
}

// 創建一個短代碼來顯示 Memos 最新動態
add_shortcode('latest_memo', 'display_latest_memo');

在首頁顯示最新動態#

接下來,要讓 Memos 最新動態只顯示在首頁文章的最上方。為此,需要修改 header.php 或者 index.php 文件,在首頁判斷條件下調用定義的短代碼。

  1. 打開主題目錄下的 header.php 文件,找到適當位置(如頭部模板部分)插入以下代碼:
<!-- 在首頁顯示最新的 Memos 動態 -->
<?php if ( is_home() || is_front_page() ) : ?>
    <div class="memos-latest">
        <?php echo do_shortcode('[latest_memo]'); ?>
    </div>
<?php endif; ?>
  1. is_home () 和 is_front_page ():這兩個函數確保只有在首頁顯示動態,而其他頁面不會顯示。is_home () 用於判斷博客文章列表頁,is_front_page () 用於判斷自定義的前端首頁。

樣式調整(居中顯示)#

將以下 CSS 代碼添加到你的主題 style.css 文件中:

.memos-latest {
    text-align: center; /* 水平居中內容 */
    margin: 20px auto; /* 上下外邊距並居中容器 */
    padding: 10px;
    background-color: #f5f5f5; /* 背景顏色 */
    max-width: 600px; /* 設置容器最大寬度 */
    border-radius: 10px; /* 圓角效果 */
}

.memos-latest h3 {
    font-size: 1.5em;
}

.memos-latest p {
    font-size: 1.2em;
}

.memos-latest a {
    text-decoration: none;
    color: #0073aa; /* 鏈接顏色 */
}

結尾#

就這樣吧,不完美的就是不能直接評論,需要點進去到 memos 頁面,繼續完善吧。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。