gpt4 book ai didi

wordpress - 在转到父主题之前,如何首先使用 include 检查子主题文件?

转载 作者:行者123 更新时间:2023-12-02 20:16:12 26 4
gpt4 key购买 nike

我正在基于现有父主题创建 WordPress 子主题,并且我希望放入子主题目录中的任何同名文件优先于父主题目录中的文件。我以为这就是 WP 中设置父/子主题的方式,但我遇到了障碍。

根据WordPress codex on Child Themes ,它说:

Template Files
If you want to change more than just the stylesheet, your child theme can override any file in the parent theme: simply include a file of the same name in the child theme directory, and it will override the equivalent file in the parent theme directory when your site loads.

在我的一个文件(header.php)中,有一个包含内容,如下所示:

include get_parent_theme_file_path("folder/file.php")

即使我的子主题中有该 file.php 的重复命名但已修改的版本,它仍然使用我的父主题中的版本。根据相同的法典,他们专门针对子主题文件的建议是使用 get_stylesheet_directory(),因此它看起来像这样:

include (get_stylesheet_directory()."/folder/file.php");

我知道名为“get_parent_theme_file_path()”的函数的目的是忽略父/子关系并仅获取父主题版本,因此无需将其替换为显式获取子主题中的文件的函数(即 get_stylesheet_directory),有没有办法让我拥有某种通用 get_path() 函数,首先检查子版本,如果不存在,则获取父版本?

顺便说一句,我读过this Q&A on "get_parent_theme_file_path vs. get_template_directory" ,但他们的解决方案是使用parent_theme_file过滤器,但这不是动态的,并且需要我为我希望它使用的每个子文件编写一个过滤器函数。

感谢您的帮助。

最佳答案

你有没有尝试过这样的事情:

add_filter( 'parent_theme_file_path', function( $path, $file ) {
return get_stylesheet_directory() . '/' . $file;
}, 10, 2 );

这应该覆盖父主题路径,而无需为每个文件编写函数。

如果您想确保 get_parent_theme_file_path() 仍然适用于子主题中未覆盖的父主题文件,您可以进行简单的检查:

add_filter( 'parent_theme_file_path', function( $path, $file ) {
if ( !file_exists( get_stylesheet_directory() . '/' . $file ) ) {
return $path;
}
return get_stylesheet_directory() . '/' . $file;
}, 10, 2 );

关于wordpress - 在转到父主题之前,如何首先使用 include 检查子主题文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52339310/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com