Laravel 5.4 和 WordPress 4.7 的辅助函数 __() 冲突
Posted
技术标签:
【中文标题】Laravel 5.4 和 WordPress 4.7 的辅助函数 __() 冲突【英文标题】:Laravel 5.4 and WordPress 4.7 conflict in helper function __() 【发布时间】:2017-06-27 10:02:07 【问题描述】:我正在使用 Laravel 开发一个网站,其中一个 WordPress 博客部分并行且独立地运行。
自 Laravel 5.3 以来,一切运行顺利,使用服务提供商,我能够在 require_once()
调用中包含“wp-load.php
”,并使用所有开箱即用的 WordPress 功能并获取/更新 WordPress 帖子。
不幸的是,在 Laravel 5.4 中定义了辅助函数 __()
,这会与 l10n.php
中声明的相同 WP 函数产生冲突。
我尝试使用命名空间,但没有运气。
这是我的服务提供者的代码:
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class WordPressServiceProvider extends ServiceProvider
/**
* Path to our WP installation
*
* @var string
*/
protected $bootstrapFilePath = '/wp-paths/wp-it-news/wp-load.php';
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
//
/**
* Register the application services.
*
* @return void
*/
public function register()
if (\File::exists(public_path() . $this->bootstrapFilePath))
require_once(public_path() . $this->bootstrapFilePath);
【问题讨论】:
好吧,如果您尝试将一个系统的代码包含到另一个系统中,我不会称之为“独立运行”。除了修改其中一个的代码之外,您对此无能为力。我建议您使用 WordPress Rest API 让您的 Laravel 与您的 WP 进行通信,而不是像您现在一直在做的那样,基本上只是将他们的代码库放在一起并希望获得最好的结果。 @CBroe 使用 WordPress Rest API 会产生至少一个额外的请求,对吧?我想避免这种情况,唯一的另一种方法是直接访问数据库。我是不是走投无路了? 【参考方案1】:您可以在 bootstrap/autoload.php 中的 vendor/autoload.php 之前包含 wp-load.php
【讨论】:
【参考方案2】:按照 Cbroe 的建议,我最终使用了 WordPress API。
Docs here
curl -X OPTIONS -i http://demo.wp-api.org/wp-json/wp/v2/posts
【讨论】:
请从链接中添加一些内容以上是关于Laravel 5.4 和 WordPress 4.7 的辅助函数 __() 冲突的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.4 “MethodNotAllowedHttpException”(基本任务列表)