You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在核心PHP站点xyz.com首页展示WordPress博客的4篇文章摘要?

在核心PHP站点中调用WordPress博客文章的解决方案

嘿,我明白你想在自己的核心PHP站点首页展示WordPress博客的4篇文章摘要——直接引入wp-config.php确实只是完成了数据库连接,但没用到WordPress的内置功能,直接操作数据表不仅麻烦,还容易踩坑(比如自定义字段、内容格式化、权限校验这些都得自己处理)。给你两个靠谱的方案,按推荐程度排序:

方案一:加载WordPress核心(最推荐)

这个方法直接利用WordPress的官方API,安全且能复用WP的所有文章处理逻辑,后续WP升级也不会影响你的代码。

在你的xyz.com/index.php开头添加以下代码(注意路径要匹配你的博客目录结构):

// 加载WordPress核心文件,确保路径正确(你的博客在/blog目录下,所以路径是相对根目录的blog/wp-load.php)
require_once('blog/wp-load.php');

// 配置查询参数:取最新4篇已发布的文章
$args = array(
    'post_type' => 'post',
    'posts_per_page' => 4,
    'post_status' => 'publish',
    'orderby' => 'date',
    'order' => 'DESC'
);

// 执行查询
$query = new WP_Query($args);

// 循环输出文章摘要
if ($query->have_posts()) {
    while ($query->have_posts()) {
        $query->the_post();
        ?>
        <div class="blog-item">
            <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
            <div class="excerpt"><?php the_excerpt(); ?></div>
            <span class="post-date">发布于 <?php the_date('Y-m-d'); ?></span>
        </div>
        <?php
    }
    // 重置查询上下文,避免影响后续核心PHP代码的变量
    wp_reset_postdata();
} else {
    echo '<p>暂无博客文章</p>';
}

为什么推荐这个方案?

  • 不用自己写复杂的SQL查询,WP会自动处理文章状态、权限、分类过滤等逻辑
  • 直接使用the_permalink()、the_excerpt()等官方函数,确保链接和内容格式和博客一致
  • 支持自定义字段、分类标签等扩展信息的调用,后续需求变更更灵活

方案二:直接查询WordPress数据库(轻量场景可选)

如果不想加载整个WP核心,也可以直接通过数据库查询获取文章数据,但要注意处理细节:

// 引入WP配置文件,获取数据库连接信息和表前缀
require_once('blog/wp-config.php');

// 初始化数据库连接(用mysqli为例)
$conn = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if ($conn->connect_error) {
    die("数据库连接失败: " . $conn->connect_error);
}

// 获取WP表前缀(默认是wp_,但可能你修改过)
$table_prefix = $GLOBALS['table_prefix'];

// 编写查询SQL,取最新4篇已发布文章
$sql = "SELECT ID, post_title, post_excerpt, post_date, post_name 
        FROM {$table_prefix}posts 
        WHERE post_type = 'post' AND post_status = 'publish' 
        ORDER BY post_date DESC 
        LIMIT 4";

$result = $conn->query($sql);

// 输出文章内容
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        // 构建文章链接:根据你的WP固定链接结构调整,这里假设是/%year%/%monthnum%/%day%/%postname%/
        $post_url = "blog/" . date('Y/m/d', strtotime($row['post_date'])) . "/" . $row['post_name'] . "/";
        ?>
        <div class="blog-item">
            <h3><a href="<?php echo $post_url; ?>"><?php echo htmlspecialchars($row['post_title']); ?></a></h3>
            <div class="excerpt"><?php echo htmlspecialchars($row['post_excerpt'] ?: '暂无摘要'); ?></div>
            <span class="post-date">发布于 <?php echo date('Y-m-d', strtotime($row['post_date'])); ?></span>
        </div>
        <?php
    }
} else {
    echo '<p>暂无博客文章</p>';
}

// 关闭数据库连接
$conn->close();

注意事项

  • 固定链接结构:如果你的WP用了自定义固定链接(比如仅用文章名),要对应修改$post_url的拼接逻辑
  • 安全处理:一定要用htmlspecialchars()转义输出内容,避免XSS攻击
  • 表前缀:不要硬写wp_,通过$table_prefix获取,确保适配不同的WP配置

内容的提问来源于stack exchange,提问作者Amarjeet Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:10:38