如何在 WordPress 首页显示 Memos 最新动态

 5天前     61  

文章目录

    准备工作

    确保已安装 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; ?>
      
    2. 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页面,继续完善吧。

    版权声明:段先森 发表于 5天前,共 2354 字。
    转载请注明:如何在 WordPress 首页显示 Memos 最新动态 | 三无青年

    您可能感兴趣的

    22 条评论