如何在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密钥验证、缓存设置等,适合需要权限控制的场景。
这类插件的缺点是灵活度不如自定义开发,样式和数据处理可能需要额外调整,建议选择下载量高、更新频繁的插件。
额外注意事项
- 缓存优化:除了Laravel端的缓存,WordPress端也可以用
transient缓存API请求结果,减少重复请求,提升页面加载速度。 - 安全性:如果API需要权限验证,可以给Laravel接口加API密钥,WordPress请求时在请求头里带上密钥,避免接口被恶意调用。
- 错误处理:一定要处理API请求失败、数据为空的情况,给用户友好的提示,避免页面出现空白或报错。
内容的提问来源于stack exchange,提问作者Akshat Verma
相关产品推荐
相关产品推荐

