如何将Wordpress页眉和页脚拉入Laravel视图?

时间:2016-05-03 19:26:38

标签: wordpress laravel header footer

在我提出这个问题之前,请允许我说,我在这里看到了一个类似的问题,其答案相当详细:

https://wordpress.stackexchange.com/questions/115211/loading-wordpress-stuff-on-laravel-site

这是我在网上找到的最接近我正在寻找的东西,但潜在的解决方案看起来可能最终变得如此费力,以至于不值得花时间。这是我的情况:

我开发并维护一个小型自定义SaaS程序,该程序通常在客户端站点的子域(例如,software.client.com)上运行。使用Laravel重写了最新版本的代码,并且与此相关的收益很多。在过去,当程序基本上是程序性的意大利面时,如果我们的主域上有一个Wordpress站点的客户端,我们运行了一些恶意(通过最佳实践标准)黑客代码将Wordpress页眉和页脚拉到我的程序的页面 - 当然,坐在CMS之外 - 同时修改元标记并执行许多其他操作。它不是很漂亮,但它确实有用。

现在我处理的情况是我想要解决同样的问题 - 也就是说至少将Wordpress页眉和页脚拉到某些Laravel子域上观点 - 但到目前为止我在网上找不到的任何东西使我在这个方向上取得了很大进展。我找到了很多教程,解释了如何集成Laravel和Wordpress,或者使用一个用于前端,另一个用于后端等,但还没有关于我正在讨论的特定集成类型。

到目前为止,我所尝试的是将我在其他地方使用的一些代码实现到Laravel代码库的各个部分。大多数最近的实验都是在public / index.php和Controller方法中。 Laravel将允许我尽可能包括Wordpress配置,但如果我试图继续进行,我会导致500错误。这是一个实际尝试做的事情超过我需要的示例片段,但我甚至无法超越wp_init()。想象一下Laravel Controller方法中的以下代码。前两行是好的,但是:

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()

(我并不是真的希望这可以在Controller中运行,但它在代码库中的任何其他地方都没有工作。我也尝试过。)这不是我想要的情况将控制从Laravel切换到Wordpress以获取这些URL(我需要Laravel函数/数据库查询和更多的灵活性,我知道我可以通过public / index.php和routes.php进行切换,如果它可以解决问题)。对于这些安装,我不需要从Wordpress获取帖子或其他项目。我想找到一种方法直接从Wordpress将标题页脚拉入这些视图,同时保持对Laravel中视图的控制。如果我不能,除其他外,设计团队将最终为Wordpress客户端上的每个程序安装重建页眉和页脚(暂时),他们将不得不在至少两个地方进行更改被修改或更新。

如果必须,我们将找到一种方法,直到下一个程序版本推出,但如果我可以建立一个解决方案,我的上司将认为合理的时间,我们都会更快乐。我希望我在某个地方错过了一些简单的东西,我会很尴尬地发现我可以在比解释问题所花费的时间更短的时间内解决这个问题。感谢您提供任何有用的回复和可能的解决方案。

1 个答案:

答案 0 :(得分:0)

您无法将两个代码库完全合并在一起。这会造成灾难。

解决方案的复杂性取决于您需要共享的信息的复杂性。最简单的解决方案是为WordPress写一些自定义内容,构建一个没有正文数据的文档,只提供一个令牌,如{!! $body !!}。然后,在Laravel中,您可以向localhost发出HTTP请求以获取此标记化内容。将结果存储在内存缓存中,并使用Blade渲染最终视图。

基本上,我的建议归结为:使用WordPress创建一个Blade布局。

有很多不同的方法可以做到这一点,而且所有这些都是错误的。