当托管在 openshift 上时,WordPress(Redux 框架主题)中样式表和 Javascript 的路径无效

Posted

技术标签:

【中文标题】当托管在 openshift 上时,WordPress(Redux 框架主题)中样式表和 Javascript 的路径无效【英文标题】:Invalid paths of Stylesheet and Javascript in WordPress (Redux framework themes) when hosted on openshift 【发布时间】:2017-11-24 02:57:25 【问题描述】:

主题选项面板无法正确加载 OpenShift 上的某些主题。我正在使用使用 Redux 框架构建的 wordpress 的 Avada 主题。在 localhost 上一切正常,但是当我在 openshift 上托管网站时,“主题选项”不起作用,FireBug 的控制台显示样式表和脚本路径被 openshift 弄乱了。

示例样式表的当前(无效)url 如下所示:

https://my-website.com/wp-content/var/lib/openshift/5942968f‌​2d527198350000f2/app‌​-root/data/themes/th‌​emeName/includes/lib‌​/inc/redux/framework‌​/FusionReduxCore/inc‌​/extensions/import_e‌​xport/import_export /‌​field_import_export.‌​css

虽然应该是这样的:

https://my-website.com/wp-content/themes/themeName/includes/‌​lib/inc/redux/framew‌​ork/FusionReduxCore/‌​inc/extensions/import‌​t_export/import_expo‌​rt/field_import_expo‌​rt.css

整个网址中不应有任何 /var/lib/openshift/

我需要解决这个问题,但我对 Redux 框架中的编码一无所知,也不知道如何更改路径并将其指向正确的路径。

【问题讨论】:

您能否详细介绍一下您的情况下如何定义 URL 以及它们的路径应该是什么样的? 示例样式表的当前(无效)url 是这样的:https://my-website.com/wp-content/var/lib/openshift/5942968f2d527198350000f2/app-root/data/themes/themeName/includes/lib/inc/redux/framework/FusionReduxCore/inc/extensions/import_export/import_export/field_import_export.css 虽然应该是这样:https://my-website.com/wp-content/themes/themeName/includes/lib/inc/redux/framework/FusionReduxCore/inc/extensions/import_export/import_export/field_import_export.css 应该在整个 url 中不是任何 /var/lib/openshift/ 我现在了解您的 URL 的外观以及它们的外观。现在,下一个问题是:您的 URL 是如何生成的?如果你在整个项目中搜索 field_import_export,你应该可以知道它的 URL 是如何生成的(函数调用和/或 src 属性中的路径是什么) 在哪个文件中查找? 我搜索了谷歌,它与一个叫做符号链接的东西有关?会不会是plugin_dir?在这一切中我都是空白的..特别是 wordpress 编码 【参考方案1】:

试着把它放到functions.php

function ReduxSymLinkURL()
  $url = "https://my-website.com/wp-content/themes/themeName/includes/‌​lib/inc/redux/framew‌​ork/FusionReduxCore/‌​";
  return $url;

add_filter( 'redux/_url', 'ReduxSymLinkURL', 10 );

【讨论】:

会试一试并通知您。【参考方案2】:

Avada is a paid theme。当付费主题不起作用时,开发人员应该为您提供帮助。它与该主题完全相关,既不是 OpenShift 也不是 WordPress 的核心功能。较新的 WordPress 支持不同类型的托管和WordPress doc does have reference when URLs may be not like common traditional hosting。

我提供了一个简单的通用修复来在前端加载 CSS。 Sagar V 提供的 plugin-symlink 插件也是通用的。这是我们能做的最大的事情。您可以尝试寻找有经验的 Avada 主题用户。

依赖关系

确保缺少主题所需的任何依赖 Wordpress 插件。 Make sure that you have followed the guide of using Redux framework 或 that theme's official docs。

检查链接是如何生成的

This is my 6 years old demo WordPress running on free Openshift with default WordPress theme without any issue。该主题的头文件正在通过以下方式找到html5.js

<script src="<?php echo get_template_directory_uri(); ?>/js/html5.js" type="text/javascript"></script>

为了找到它,我从 WordPress 管理员访问了 Appearance &gt; Editor &gt; Theme Header (header.php)。 Lajos Arpad 是通过 cmets 来问你的。正确的方法是修改该代码。他/她说How are your URLs being generated?,因为我们不知道哪些文件,如何生成链接。 header.php 适用于常见主题,但 Redux 框架主题可能会有所不同。 Lajos Arpad 已经建议你通过 cmets 在整个项目中搜索 field_import_export。

通用修复

但是我们没有代码。我们需要一个通用的修复。这是前端的临时修复。你在前端需要这个:

https://my-website.com/wp-content/wp-cntent/themes/th‌​emeName/includes/lib‌​/inc/redux/framework‌​/FusionReduxCore/inc‌​/extensions/import_e‌​xport/import_export/‌​field_import_export.‌​css

确保它存在,而不是 404。安装 Header & Footer like plugin。通过该插件在前端注入 CSS:

<link rel="stylesheet" href="https://my-website.com/wp-content/wp-cntent/themes/th‌​emeName/includes/lib‌​/inc/redux/framework‌​/FusionReduxCore/inc‌​/extensions/import_e‌​xport/import_export/‌​field_import_export.‌​css"  type="text/css">

注释掉主题头文件中注入 CSS、Js 的行或它正在调用的位置。加载和测试。该修复不会抑制任何警告,但前端将加载到前端。

【讨论】:

【参考方案3】:

这是一个已报告的已知问题 Here1、here2、here3、here4等等.

这不是 Redux 的问题。

主题会发生这种情况

您必须联系主题开发人员才能解决此问题。

但是对于我在上面发布的问题,您可以查看解决方案。

无论如何,我想在这里发布一些问题的修复

引用WordPress

还需要注意的是,PHP 的 FILE 魔术常量会自动解析符号链接,因此如果 wp-content 或 wp-content/plugins 甚至单个插件目录是符号链接的,此函数将不会正常工作。

主题链接是符号链接的。这就是问题所在。

可以在here找到示例修复

另一个 引用@Liggitt

Wordpress 提供了过滤插件路径的钩子。我编写了一个简单的插件,即使使用符号链接文件夹,它也会将插件 url 调整为正确。 ssh 进入您的 wordpress 应用程序,然后运行以下命令:

cd app-root/data/plugins/
git clone git://github.com/liggitt/wordpress-plugin-symlink.git

登录到您的 wordpress 管理控制台,并激活 plugin-symlink 插件。

【讨论】:

“可以找到一个示例修复 here”根本不起作用。 然后请添加更多详细信息。主题名称、开发者名称等

以上是关于当托管在 openshift 上时,WordPress(Redux 框架主题)中样式表和 Javascript 的路径无效的主要内容,如果未能解决你的问题,请参考以下文章

当机器人托管在 heroku 上时如何制作 discord.js 图像搜索命令

当一个 MVC Web 应用程序托管在多个用户同时访问的服务器上时,应用程序和会话变量会发生啥?

如何在 OpenShift 托管中使用裸 GoDaddy 域? [关闭]

OpenShift 数据库主机价值?

我可以在 OpenShift 上启用 HTTP/2 吗?

当客户端不在同一 IP 上时,无法通过客户端调用节点服务器