如何将 Wordpress header 和页脚拉到 Laravel 视图中?
How can I pull a Wordpress header and footer into Laravel views?
在开始这个问题之前,让我先说一下,我在这里看到了一个类似的问题,并且有相当详细的回复:
https://wordpress.stackexchange.com/questions/115211/loading-wordpress-stuff-on-laravel-site
这是我在网上找到的最接近我正在寻找的东西,但潜在的解决方案看起来可能最终会非常费力,以至于不值得花时间。这是我的情况:
我开发和维护一个小型自定义 SaaS 程序,该程序通常在客户站点的子域上运行(例如,software.client.com)。最新版本的代码是使用 Laravel 重写的,并且有很多相关的收获。过去,当程序基本上是程序意大利面条时,如果我们有一个客户在他们的主域上有一个 Wordpress 站点,我们 运行 一些残酷的(按照 best-practices 标准)hack-around 代码来将 Wordpress header 和页脚拉到我的程序页面上——当然,它位于 CMS 之外——同时修改元标记并执行许多其他操作。它不是很漂亮,但它起作用了。
现在我想解决同样的问题 - 也就是说,至少 拉 Wordpress headers 和页脚到一些 Laravel 子域视图 - 但到目前为止,我在网络上发现的任何内容都无法使我在那个方向上取得很大进展。我找到了很多解释如何集成 Laravel 和 Wordpress 的教程,或者将一个用于前端,另一个用于后端等,但是还没有关于我正在谈论的特定类型的集成。
到目前为止我已经尝试将我在其他地方使用的一些代码实现到 Laravel 代码库的各个部分。最近的大部分实验都是在 public/index.php 和 Controller 方法中进行的。 Laravel 将允许我尽可能地包括 Wordpress 配置,但如果我尝试更进一步,我会导致 500 错误。这是一个示例片段,它实际上试图做的比我需要的更多,但我什至无法通过 wp_init()。想象一下 Laravel 控制器方法中的以下代码。前两行没问题,但是:
public function index() {
define('WP_USE_THEMES', false);
require '/path_to/wp-config.php';
$wp->init(); // from here on, 500 errors occur
$wp->parse_request();
$wp->query_posts();
$wp->register_globals();
// And then, at some point, I would call and modify get_header()
(我真的没想到它能在控制器上工作,但它在我试过的代码库中的其他任何地方都不起作用。)这不是我想交出控制权的情况从 Laravel 到这些 URL 的 Wordpress(我需要 Laravel 函数/数据库查询和更大的灵活性,我知道我可以做到 hand-off 通过 public/index.php 和 routes.php 如果它能解决问题)。对于这些安装,我不需要从 Wordpress 中获取帖子或其他项目。我只想找到一种方法将 header 和 footer 直接从 Wordpress 拉入这些视图,同时保持对视图的控制在 Laravel。如果我做不到,除其他外,设计团队将最终为 Wordpress 客户端上安装的每个程序重建 headers 和页脚(暂时),他们将不得不至少在两个方面进行更改修改或更新内容时的位置。
如果必须的话,我们会找到一种方法来解决这个问题,直到下一个程序版本推出,但如果我能在我的上司认为合理的时间内构建一个解决方案,我们都会更开心.我希望我只是在某处遗漏了一些简单的东西,我会很尴尬地发现我可以用比解释问题更短的时间来解决这个问题。感谢您提供任何有用的回复和可能的解决方案。
您将无法将两个代码库完全合并在一起。那会造成灾难的。
解决方案的复杂程度取决于您需要共享的信息的复杂程度。最简单的解决方案可能是为 WordPress 编写一些定制的东西,它构建一个没有正文数据的文档,只提供一个标记,比如 {!! $body !!}
。然后,在 Laravel 中,您可以向本地主机发出 HTTP 请求以获取此标记化内容。将结果存储在内存缓存中,并使用 Blade 渲染最终视图。
基本上,我的建议归结为:使用 WordPress 创建 Blade 布局。
有一千种不同的方法可以做到这一点,但所有的方法都是错误的。
在开始这个问题之前,让我先说一下,我在这里看到了一个类似的问题,并且有相当详细的回复:
https://wordpress.stackexchange.com/questions/115211/loading-wordpress-stuff-on-laravel-site
这是我在网上找到的最接近我正在寻找的东西,但潜在的解决方案看起来可能最终会非常费力,以至于不值得花时间。这是我的情况:
我开发和维护一个小型自定义 SaaS 程序,该程序通常在客户站点的子域上运行(例如,software.client.com)。最新版本的代码是使用 Laravel 重写的,并且有很多相关的收获。过去,当程序基本上是程序意大利面条时,如果我们有一个客户在他们的主域上有一个 Wordpress 站点,我们 运行 一些残酷的(按照 best-practices 标准)hack-around 代码来将 Wordpress header 和页脚拉到我的程序页面上——当然,它位于 CMS 之外——同时修改元标记并执行许多其他操作。它不是很漂亮,但它起作用了。
现在我想解决同样的问题 - 也就是说,至少 拉 Wordpress headers 和页脚到一些 Laravel 子域视图 - 但到目前为止,我在网络上发现的任何内容都无法使我在那个方向上取得很大进展。我找到了很多解释如何集成 Laravel 和 Wordpress 的教程,或者将一个用于前端,另一个用于后端等,但是还没有关于我正在谈论的特定类型的集成。
到目前为止我已经尝试将我在其他地方使用的一些代码实现到 Laravel 代码库的各个部分。最近的大部分实验都是在 public/index.php 和 Controller 方法中进行的。 Laravel 将允许我尽可能地包括 Wordpress 配置,但如果我尝试更进一步,我会导致 500 错误。这是一个示例片段,它实际上试图做的比我需要的更多,但我什至无法通过 wp_init()。想象一下 Laravel 控制器方法中的以下代码。前两行没问题,但是:
public function index() {
define('WP_USE_THEMES', false);
require '/path_to/wp-config.php';
$wp->init(); // from here on, 500 errors occur
$wp->parse_request();
$wp->query_posts();
$wp->register_globals();
// And then, at some point, I would call and modify get_header()
(我真的没想到它能在控制器上工作,但它在我试过的代码库中的其他任何地方都不起作用。)这不是我想交出控制权的情况从 Laravel 到这些 URL 的 Wordpress(我需要 Laravel 函数/数据库查询和更大的灵活性,我知道我可以做到 hand-off 通过 public/index.php 和 routes.php 如果它能解决问题)。对于这些安装,我不需要从 Wordpress 中获取帖子或其他项目。我只想找到一种方法将 header 和 footer 直接从 Wordpress 拉入这些视图,同时保持对视图的控制在 Laravel。如果我做不到,除其他外,设计团队将最终为 Wordpress 客户端上安装的每个程序重建 headers 和页脚(暂时),他们将不得不至少在两个方面进行更改修改或更新内容时的位置。
如果必须的话,我们会找到一种方法来解决这个问题,直到下一个程序版本推出,但如果我能在我的上司认为合理的时间内构建一个解决方案,我们都会更开心.我希望我只是在某处遗漏了一些简单的东西,我会很尴尬地发现我可以用比解释问题更短的时间来解决这个问题。感谢您提供任何有用的回复和可能的解决方案。
您将无法将两个代码库完全合并在一起。那会造成灾难的。
解决方案的复杂程度取决于您需要共享的信息的复杂程度。最简单的解决方案可能是为 WordPress 编写一些定制的东西,它构建一个没有正文数据的文档,只提供一个标记,比如 {!! $body !!}
。然后,在 Laravel 中,您可以向本地主机发出 HTTP 请求以获取此标记化内容。将结果存储在内存缓存中,并使用 Blade 渲染最终视图。
基本上,我的建议归结为:使用 WordPress 创建 Blade 布局。
有一千种不同的方法可以做到这一点,但所有的方法都是错误的。