avexsoft / laravel-sidepress
让 WordPress 与 Laravel 在同一域名根目录下,并排运行
1.0.0
2021-03-08 06:14 UTC
Requires
- illuminate/support: ~7|~8
Requires (Dev)
- orchestra/testbench: ~5|~6
- phpunit/phpunit: ~9.0
README
这是做什么的?
一个 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 的一项渐进式步骤。
它是如何工作的?
- 所有 URI 都由 Laravel 首先处理
- 不存在的 URI 最终进入一个捕获所有路由,该路由附加
sidep=1并执行redirect() - 当浏览器使用
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)。请参阅许可证文件获取更多信息。