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

如何在WordPress中展示Laravel的Blade视图?有无对应集成插件?

实现Laravel内容到WordPress的展示方案

这个需求其实挺常见的——很多团队会用Laravel做业务后台(比如招聘管理),WordPress负责前端内容展示(毕竟后者做页面和SEO更省心)。因为两个系统数据库完全独立,直接跨库读数据肯定行不通,核心思路就是通过API实现数据互通:让Laravel暴露结构化的数据接口,WordPress拉取数据后渲染成页面板块。下面给你两种可行方案,按需选择:

自定义开发方案(推荐,灵活度高)

第一步:在Laravel中编写API接口

先给你的招聘数据写一个公开的API接口,返回JSON格式的数据,还可以加上缓存优化性能:

// Laravel app/Http/Controllers/JobListingController.php
namespace App\Http\Controllers;

use App\Models\Job;
use Illuminate\Http\Request;

class JobListingController extends Controller
{
    public function index()
    {
        // 缓存1小时,避免频繁查库
        $jobs = cache()->remember('active_jobs', 3600, function () {
            return Job::where('is_active', true)
                ->orderBy('created_at', 'desc')
                ->select('title', 'description', 'location', 'apply_url', 'created_at')
                ->get()
                ->toArray();
        });

        return response()->json($jobs);
    }
}

然后在routes/api.php中注册路由:

Route::get('jobs', [JobListingController::class, 'index']);

关键注意:要配置CORS允许WordPress域名访问,不然会出现跨域错误。可以用Laravel官方推荐的fruitcake/laravel-cors包,在配置文件里把WordPress的域名加入允许列表。

第二步:在WordPress中编写短代码/页面模板

写一个自定义短代码,这样你可以直接在WordPress的页面编辑器里插入[laravel_jobs]就能展示招聘板块了。把这段代码加到主题的functions.php或者自定义插件文件里:

// WordPress 主题functions.php 或自定义插件文件
function laravel_jobs_shortcode() {
    $api_url = 'https://你的Laravel域名.com/api/jobs';
    // 发起API请求
    $response = wp_remote_get($api_url, [
        'timeout' => 10,
        'headers' => ['Accept' => 'application/json']
    ]);

    // 处理请求失败的情况
    if (is_wp_error($response)) {
        return '<p>暂时无法加载招聘信息,请稍后再试。</p>';
    }

    $body = wp_remote_retrieve_body($response);
    $jobs = json_decode($body, true);

    if (empty($jobs)) {
        return '<p>目前没有正在招聘的职位。</p>';
    }

    // 渲染HTML,你可以模仿Laravel Blade的样式来写
    $html = '<div class="laravel-jobs-section">';
    $html .= '<h3>最新招聘职位</h3>';
    $html .= '<ul class="job-list">';
    foreach ($jobs as $job) {
        $html .= sprintf(
            '<li class="job-item">
                <h4><a href="%s" target="_blank">%s</a></h4>
                <p class="job-location">📍 %s</p>
                <p class="job-description">%s</p>
                <span class="job-date">发布于:%s</span>
            </li>',
            esc_url($job['apply_url']),
            esc_html($job['title']),
            esc_html($job['location']),
            wp_trim_words(esc_html($job['description']), 20),
            date('Y-m-d', strtotime($job['created_at']))
        );
    }
    $html .= '</ul></div>';

    return $html;
}
add_shortcode('laravel_jobs', 'laravel_jobs_shortcode');

之后你只需要在WordPress的页面编辑器里输入[laravel_jobs],就能看到招聘板块了。如果要和Laravel的样式一致,把Laravel项目里对应的CSS代码复制到WordPress主题的样式文件里即可。

现成插件方案(适合不想写代码的场景)

如果不想自己写代码,可以用这类专门调用外部API的WordPress插件:

  • Fetch API Shortcode:安装激活后,直接用短代码指定API地址,再用模板语法渲染数据。示例:
    [fetch_api url="https://你的Laravel域名.com/api/jobs"]
        <div class="laravel-jobs-section">
            <h3>最新招聘职位</h3>
            <ul>
                {{#each data}}
                    <li>
                        <h4><a href="{{apply_url}}" target="_blank">{{title}}</a></h4>
                        <p>{{location}}</p>
                    </li>
                {{/each}}
            </ul>
        </div>
    [/fetch_api]
    
  • WP REST API Client:功能更全面,支持API密钥验证、缓存设置等,适合需要权限控制的场景。

这类插件的缺点是灵活度不如自定义开发,样式和数据处理可能需要额外调整,建议选择下载量高、更新频繁的插件。

额外注意事项

  1. 缓存优化:除了Laravel端的缓存,WordPress端也可以用transient缓存API请求结果,减少重复请求,提升页面加载速度。
  2. 安全性:如果API需要权限验证,可以给Laravel接口加API密钥,WordPress请求时在请求头里带上密钥,避免接口被恶意调用。
  3. 错误处理:一定要处理API请求失败、数据为空的情况,给用户友好的提示,避免页面出现空白或报错。

内容的提问来源于stack exchange,提问作者Akshat Verma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:33:45