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

如何将WordPress作为文章数据库供自定义HTML/CSS/PHP站点调用?

两种方案实现自定义PHP站点调用WordPress文章数据

我之前帮朋友处理过类似需求,核心思路就是让你的自定义站点能读取WordPress的文章数据,然后按你自己的HTML结构渲染。这里有两种最常用的方案,你可以根据自己的服务器部署情况选:

方案一:使用WordPress REST API(推荐跨域/独立站点场景)

WordPress默认自带REST API,不需要额外插件就能用,适合你的站点和WP不在同一个项目里的情况。

步骤1:确认REST API可用

先在浏览器里访问你的WP站点的API地址:https://你的WP域名/wp-json/wp/v2/posts,如果能看到返回的文章JSON数据,说明API正常开启(默认是开的,除非你用了安全插件限制)。

步骤2:在自定义PHP里请求API并渲染

用PHP的file_get_contents或者cURL请求API,拿到数据后解析成数组,再循环填充到你的自定义标签里。这里给个完整示例:

<?php
// WP REST API地址,加上?_embed可以直接获取特色图片等关联数据
$api_url = 'https://你的WP域名/wp-json/wp/v2/posts?_embed&per_page=10';

// 请求API
$response = file_get_contents($api_url);
if (!$response) {
    die('无法连接到WordPress API');
}

// 解析JSON为PHP数组
$posts = json_decode($response, true);
?>

<!-- 你的自定义HTML结构 -->
<div class="blog-list">
    <?php foreach ($posts as $post): ?>
        <article class="blog-item">
            <!-- 文章标题 -->
            <h2><?php echo htmlspecialchars($post['title']['rendered']); ?></h2>
            <!-- 发布日期 -->
            <p class="post-date"><?php echo date('Y-m-d', strtotime($post['date'])); ?></p>
            <!-- 特色图片 -->
            <?php if (!empty($post['_embedded']['wp:featuredmedia'][0]['source_url'])): ?>
                <img src="<?php echo htmlspecialchars($post['_embedded']['wp:featuredmedia'][0]['source_url']); ?>" 
                     alt="<?php echo htmlspecialchars($post['_embedded']['wp:featuredmedia'][0]['alt_text'] ?: $post['title']['rendered']); ?>">
            <?php endif; ?>
            <!-- 文章内容(已处理HTML) -->
            <div class="post-content">
                <?php echo $post['content']['rendered']; ?>
            </div>
        </article>
    <?php endforeach; ?>
</div>

注意事项

  • 如果你的自定义站点和WP不在同一个域名,需要在WP的functions.php里添加CORS允许:
add_action('rest_api_init', function () {
    remove_filter('rest_pre_serve_request', 'rest_send_cors_headers');
    add_filter('rest_pre_serve_request', function ($value) {
        header('Access-Control-Allow-Origin: 你的自定义站点域名');
        header('Access-Control-Allow-Methods: GET');
        header('Access-Control-Allow-Credentials: true');
        return $value;
    });
});
  • 可以通过API参数过滤文章,比如categories=1只显示分类ID为1的文章,per_page控制每页数量,具体参数可以自行查阅WP官方的REST API说明。

方案二:直接集成WordPress核心(适合同服务器/同项目场景)

如果你的自定义站点和WP在同一个服务器,甚至是同一个项目目录下,可以直接引入WP的核心文件,然后用WP自带的函数查询文章,这种方式更灵活,能直接调用WP的所有功能。

步骤1:引入WP核心文件

在你的自定义PHP文件开头,引入WP根目录下的wp-load.php:

<?php
// 注意路径要正确,比如WP在wp目录下,就写'./wp/wp-load.php'
require_once('/path/to/your/wordpress/wp-load.php');

步骤2:用WP函数查询并渲染文章

直接用get_posts()或者WP_Query查询文章,然后循环输出到你的自定义标签里:

<?php
// 查询文章参数:显示10篇,按发布日期倒序
$args = array(
    'post_type' => 'post',
    'posts_per_page' => 10,
    'orderby' => 'date',
    'order' => 'DESC'
);

$posts_query = new WP_Query($args);

if ($posts_query->have_posts()):
?>

<div class="blog-list">
    <?php while ($posts_query->have_posts()): $posts_query->the_post(); ?>
        <article class="blog-item">
            <!-- 文章标题 -->
            <h2><?php the_title(); ?></h2>
            <!-- 发布日期 -->
            <p class="post-date"><?php the_date('Y-m-d'); ?></p>
            <!-- 特色图片 -->
            <?php if (has_post_thumbnail()): ?>
                <img src="<?php the_post_thumbnail_url('large'); ?>" 
                     alt="<?php echo get_post_meta(get_post_thumbnail_id(), '_wp_attachment_image_alt', true) ?: get_the_title(); ?>">
            <?php endif; ?>
            <!-- 文章内容 -->
            <div class="post-content">
                <?php the_content(); ?>
            </div>
        </article>
    <?php endwhile; ?>
</div>

<?php
// 重置查询
wp_reset_postdata();
else:
    echo '<p>暂无文章</p>';
endif;
?>

注意事项

  • 路径一定要正确,否则会报错找不到文件,你可以用realpath()来确认路径是否正确。
  • 这种方式会加载WP的整个核心,性能上比REST API稍差,但胜在功能强大,比如可以直接处理短代码、自定义字段等。

总结

  • 如果你的站点和WP是独立的(比如不同域名),优先用REST API,简单易维护。
  • 如果是同服务器同项目,用集成WP核心的方式,灵活性更高。

内容的提问来源于stack exchange,提问作者Pelayo Martinez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:06:38