gpt4 book ai didi

WordPress 从插件中替换 header.php

转载 作者:行者123 更新时间:2023-12-05 07:25:28 29 4
gpt4 key购买 nike

我已经搜索过,但找不到任何答案。

如何从自定义插件中替换主题 header.php 模板?

无论我在哪里看,似乎都无法完成,您只能从主题/子主题更改模板部分。

但是像 Elementor page builder 这样的插件是如何在他们的主题构建器中做到这一点的呢?

谢谢,丹尼尔

最佳答案

我还需要从我的插件中包含一个自定义的 header.php。因为您可以通过 ${type}_template hook 从插件中注册 page.php、post.php 或 archive.php 等模板。 ,我认为对 header.php 做同样的事情应该不难,但是你不能从父主题或子主题以外的目录加载自定义 header.php。

当向下遍历 get_header 函数时,您将看到调用 locate_template 函数来加载标题模板。但是没有办法挂接到该函数并替换加载的 header 模板的路径:

    function locate_template( $template_names, $load = false, $require_once = true, $args = array() ) {
$located = '';
foreach ( (array) $template_names as $template_name ) {
if ( ! $template_name ) {
continue;
}
if ( file_exists( STYLESHEETPATH . '/' . $template_name ) ) {
$located = STYLESHEETPATH . '/' . $template_name;
break;
} elseif ( file_exists( TEMPLATEPATH . '/' . $template_name ) ) {
$located = TEMPLATEPATH . '/' . $template_name;
break;
} elseif ( file_exists( ABSPATH . WPINC . '/theme-compat/' . $template_name ) ) {
$located = ABSPATH . WPINC . '/theme-compat/' . $template_name;
break;
}
}

if ( $load && '' !== $located ) {
load_template( $located, $require_once, $args );
}

return $located;
}

绕过此限制的一个解决方案是摆脱插件模板中的 get_header 函数,并通过插件模板中的 require 或 require_once 语句包含插件的 header.php。但是您必须实现自己的 get_header Hook 和 l​​ocate_template 功能才能从父主题或子主题进行替换。有关省略 get_header 函数时的限制的更多信息,请参阅此答案: https://wordpress.stackexchange.com/a/5195/80177

关于WordPress 从插件中替换 header.php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54776443/

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