安装的主题使用GET_TEMPLATE_DIRECTORY,在Windows上中断WordPress

时间:2019-02-14 作者:pidgezero

我试图在Windows开发环境中的Wordpress安装上安装一个主题,该主题将通过Git与CentOS中的生产环境同步。

主题有一个名为loader.php 其中附加get_template_directory() 具有使用正斜杠的子目录路径。正如您可能猜到的,这会导致目录分隔符不匹配,从而破坏了我的整个网站。

我知道正确的答案是get_template_directory_uri(), 但我希望尽可能避免编辑父主题,以减少与未来更新的不兼容性,而是保留对子主题的任何编辑(当然没有loader.php).

我是否可以使用另一种解决方法来修复此问题,它不涉及编辑主题文件,并保持与Windows和CentOS的兼容性?

相关代码:

if ( ! defined( \'THEME_PATH\' ) )    define( \'THEME_PATH\',   trailingslashit( 
get_template_directory() ) );
require_once THEME_PATH . \'includes/theme.options.php\';
正在返回:

Fatal error: require_once(): Failed opening required \'C:\\Users\\<name>\\Sites\\dev/wp-content/themes/<themename>/includes/theme.options.php\' (include_path=\'.;C:\\php\\pear\') in C:\\Users\\<name>\\Sites\\dev\\wp-content\\themes\\<themename>\\fw\\loader.php on line 62​

1 个回复
SO网友:Jacob Peattie

汤姆的评论与我的经验一致。但是,即使混合斜杠是一个问题,您也无法通过编辑父主题以外的任何方式修复它。

这是因为包含正斜杠的字符串没有通过任何带过滤器的WordPress函数<主题使用了更现代的get_theme_file_path() 函数,则可以使用子主题中的这行代码修复问题:

add_filter( \'theme_file_path\', \'wp_normalize_path\' );
我唯一建议的另一件事是绝对确保主题尝试加载的文件实际上存在于该目录中。不完整的安装或复制可能会使您丢失文件,无论操作系统如何,这都会导致此问题。

相关推荐

Woocommerce in a subdirectory

我有一个电脑维修网站,我想在上面出售供应商提供的翻新库存,我不想在商店的设计方面浪费时间,所以我想使用我发现的另一个主题,是否可以将商店放在子目录中?商店将是