avexsoft/laravel-sidepress

让 WordPress 与 Laravel 在同一域名根目录下,并排运行

1.0.0 2021-03-08 06:14 UTC

This package is auto-updated.

Last update: 2024-09-14 19:36:55 UTC


README

Latest Version on Packagist Total Downloads Build Status

这是做什么的?

一个 Laravel 扩展包,允许 WordPress 与 Laravel 在同一域名根目录下并排运行。

  • 以下一组 URI 可以最好地说明这一点:
  • Laravel 对所有 URI 拥有最终控制权
  • 因此,php artisan down 也会关闭 WordPress 前端页面

为什么我们需要这个?

PHP 被用于 79.1% 的所有网站

-- https://w3techs.com/technologies/details/pl-php,2021 年 3 月 6 日

WordPress 被用于... 40.5% 的所有网站。

-- https://w3techs.com/technologies/details/cm-wordpress,2021 年 3 月 6 日

在代码层面,Laravel 和 WordPress 的构建方式非常不同,直到现在似乎都无法共存。鉴于有众多尝试将它们结合起来的尝试,我们很幸运地发现了这种方法。

主要好处是将 WordPress 社区纳入我们的 Laravel 项目。这个包希望作为将 WordPress 项目融入 Laravel 的一项渐进式步骤。

它是如何工作的?

  1. 所有 URI 都由 Laravel 首先处理
  2. 不存在的 URI 最终进入一个捕获所有路由,该路由附加 sidep=1 并执行 redirect()
  3. 当浏览器使用 sidep=1 重新尝试时,Laravel 的 public/index.php 会将其发送到 WordPress

优点

  • 不再将 WordPress 放在如 /blog 的子文件夹中,WordPress 现在作为一等公民(几乎!)位于根域名上。
  • 这使得熟悉 WordPress 的人可以继续像往常一样操作,同时允许 Laravel 介入并按要求覆盖任何 URI。
  • 在两个项目之间,代码和操作上的干扰最小。见 已知问题/行为

缺点

  • 使用此包,每个 WordPress URI 都会加载两次,但鉴于 PHP 和 Laravel 当前的缓存和性能水平,这对某些人来说可能是一个可以接受的折衷方案。

目标

  • 保持小巧、低代码的占用
  • 减少加载每个 URI 两次的性能影响

查看 contributing.md 了解待办事项清单。

已知问题/行为

  • 一些 WordPress 插件会修改 public/.htaccess 并破坏 Laravel,请密切监控此文件
  • 通过 WordPress 的 index.php 发送的 POST 请求会被 Laravel 的 VerifyCsrfToken 中间件阻止,即 HTTP 419,这实际上是一件好事。您可以将中间件的 $except 列表添加到其中以解决问题。WordPress 评论将通过 wp-comments-post.php 发送 POST 请求而不需要修改

安装

通过 Composer

$ composer require avexsoft/laravel-sidepress

用法

# Patch Laravel and create the Wordpress installation shell script
$ php artisan sidepress:install

# Install and configure Wordpress
$ ./sidepress-install.sh

变更日志

有关最近更改的更多信息,请参阅 changelog

测试

尚未进行测试,请随时提交 PR

$ composer test

贡献

有关详细信息以及待办事项清单,请参阅 contributing.md

安全

如果您发现任何与安全相关的问题,请通过作者的电子邮件而不是使用问题跟踪器。

我们建议为 WordPress 使用单独的数据库,以减轻任何恶意/易受攻击的插件的影响。

致谢

许可

麻省理工学院许可证(MIT)。请参阅许可证文件获取更多信息。