【问题标题】:Laravel 5.4 and WordPress 4.7 conflict in helper function __()Laravel 5.4 和 WordPress 4.7 的辅助函数 __() 冲突
【发布时间】:2023-03-08 12:45:01
【问题描述】:

我正在使用 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 会产生至少一个额外的请求,对吧?我想避免这种情况,唯一的另一种方法是直接访问数据库。我是不是走投无路了?

标签: php wordpress require-once laravel-5.4


【解决方案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
    

    【讨论】:

    • 请从链接中添加一些内容
    猜你喜欢
    • 2022-08-04
    • 2016-01-06
    • 1970-01-01
    • 2015-04-13
    • 2014-04-19
    • 1970-01-01
    • 2012-07-10
    • 2015-12-07
    • 2020-08-14
    相关资源
    最近更新 更多