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

如何使用PHP获取同一服务器上WordPress站点的所有发布文章

获取同服务器WordPress已发布文章的两种方法

嘿,我明白你现在的需求——在自己的PHP自定义应用里展示同服务器上WordPress的所有已发布文章对吧?其实WordPress的数据库结构和内置工具都能帮你轻松搞定,我给你两种靠谱的方案:

方案一:直接查询MySQL数据库(适合轻量需求)

WordPress的所有文章都存在数据库的wp_posts表中(注意:你的WordPress可能用了自定义表前缀,比如wp_可能改成了myblog_,要对应修改)。其中:

  • post_status = 'publish' 表示已发布的文章
  • post_type = 'post' 表示普通文章(如果要包含页面可以改成'page',或者用数组['post','page'])
  • post_content 字段就是你要找的文章全部内容

下面是PHP代码示例:

// 替换成你的WordPress数据库信息
$db_host = 'localhost';
$db_name = 'wordpress_db';
$db_user = 'db_user';
$db_pass = 'db_password';
$table_prefix = 'wp_'; // 你的WordPress表前缀

// 连接数据库
try {
    $pdo = new PDO("mysql:host=$db_host;dbname=$db_name;charset=utf8mb4", $db_user, $db_pass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 查询所有已发布文章
    $stmt = $pdo->prepare("SELECT ID, post_title, post_content, post_date FROM {$table_prefix}posts WHERE post_status = ? AND post_type = ? ORDER BY post_date DESC");
    $stmt->execute(['publish', 'post']);
    $posts = $stmt->fetchAll(PDO::FETCH_ASSOC);

    // 遍历输出文章
    foreach ($posts as $post) {
        echo "<h2>" . htmlspecialchars($post['post_title']) . "</h2>";
        echo "<p>发布时间:" . date('Y-m-d H:i', strtotime($post['post_date'])) . "</p>";
        echo "<div>" . $post['post_content'] . "</div>";
        echo "<hr>";
    }
} catch(PDOException $e) {
    echo "数据库连接失败: " . $e->getMessage();
}

注意哦:用PDO预处理语句可以避免SQL注入,一定要记得替换成你自己的数据库凭据~

方案二:引入WordPress环境(推荐,兼容更多场景)

如果你的应用需要处理WordPress的短代码、自定义字段、分类标签这些,直接查询数据库可能会遗漏内容。这时候最好引入WordPress的核心文件,用它的内置函数来获取文章,更规范也更安全。

代码示例:

// 引入WordPress的核心加载文件,路径根据你的实际情况调整
// 比如如果WordPress在根目录,你的应用在子目录,路径就是 '../wp-load.php'
require_once '/path/to/your/wordpress/wp-load.php';

// 使用WP_Query查询所有已发布文章
$query = new WP_Query([
    'post_status' => 'publish',
    'post_type' => 'post',
    'posts_per_page' => -1, // -1表示获取所有文章
    'orderby' => 'date',
    'order' => 'DESC'
]);

// 循环输出文章
if ($query->have_posts()) {
    while ($query->have_posts()) {
        $query->the_post();
        ?>
        <h2><?php the_title(); ?></h2>
        <p>发布时间:<?php the_date('Y-m-d H:i'); ?></p>
        <div><?php the_content(); ?></div>
        <hr>
        <?php
    }
    // 重置查询,避免影响后续代码
    wp_reset_postdata();
} else {
    echo "暂无已发布文章";
}

这个方法的好处是,the_content()会自动解析文章里的短代码、处理图片附件等,完全和WordPress前台展示的内容一致,还能方便调用get_the_category()、get_the_tags()这些函数获取更多文章附加信息。

内容的提问来源于stack exchange,提问作者Aryan amish

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:02:43