无头WordPress-插件路径问题

时间:2019-09-24 作者:INT

在我的第一个解耦站点上工作。后端由WordPress处理并位于子域上admin.mydomain.com 前端位于mydomain.com.

我在无头方法中看到的第一个问题是,所有permalinks都提到了admin.mydomain.com. 我想更改它,以便后端引用我的前端。

因此,我将配置从:
WP_HOME=\'http://admin.mydomain.test\'
WP_SITEURL=\'http://admin.domain.test/wp\'

收件人:
WP_HOME=\'http://mydomain.test\'
WP_SITEURL=\'http://admin.domain.test/wp\'

这解决了我在permalinks上的问题,但现在我在WP仪表板上发现控制台错误,因为插件找不到所需的资源,例如ACF:

index.php:63 GET http://mydomain.test/app/plugins/advanced-custom-fields-pro/assets/css/acf-global.css?ver=5.8.4 net::ERR_NAME_NOT_RESOLVED
解决这个问题的正确做法是什么?

2 个回复
最合适的回答,由SO网友:INT 整理而成

我的快速而肮脏的修复如下所示(请注意,我使用根Bedrock, 因此它不同于普通WP安装)。

输入。env添加此行WP_HOME_ADMIN=\'http://admin.mydomain.test\'

正在应用中。php添加此行,最好在where后面WP_HOME 已定义:Config::define(\'WP_HOME_ADMIN\', env(\'WP_HOME_ADMIN\'));

在where之后的某处CONTENT_DIR 定义后,添加此行:Config::define(\'WP_PLUGIN_URL\', Config::get(\'WP_HOME_ADMIN\') . Config::get(\'CONTENT_DIR\') .\'/plugins\');

SO网友:Arman Shahinyan

我知道这个问题和答案是一年多前的,但我只是想补充一些额外的信息,希望它可能对这个问题的未来访问者有用。

最近,在使用Roots Basick建立无头WordPress CMS时,我遇到了同样的问题,并用与您的解决方案略有不同的版本解决了它。我应用了1点和2点完全相同,但3点略有不同。我没有添加新行,而是更改了WP\\u CONTENT\\u URL常量的声明,如下所示:

Config::define(\'WP_CONTENT_URL\', Config::get(\'WP_HOME\') . Config::get(\'CONTENT_DIR\'));
对此:

Config::define(\'WP_CONTENT_URL\', Config::get(\'WP_HOME_ADMIN\') . Config::get(\'CONTENT_DIR\'));
这解决了后端插件路径和活动主题的后端资产路径。

但还有最后一个错误:WordPress REST API端点在后端无法访问,因为它是用get_home_url() 函数返回附加到前端URL的REST API端点,而不是get_site_url().

正在寻找修复REST API URL的解决方案,我遇到了以下问题post answer 如果文章作者提供了此过滤功能,您可以将其粘贴到活动主题的功能中。用于将REST API URL的基础替换为后端URL的基础的php文件:

/*
 * Fix Roots Bedrock WP REST API base endpoint
 */
add_filter( \'rest_url\', function( $url ) {
    $pattern = \'/(\\S+)(\\/wp\\/?)$/\';
    $siteURL = preg_replace( $pattern, \'${1}\', site_url() );
    $url = str_replace( home_url(), $siteURL, $url );
    
    return $url;
} );
该函数将前端URL替换为后端URL,并删除/wp 根基石WordPress后端URL的一部分。