插件模板中的Get_Header()、Get_Footer()

时间:2017-10-07 作者:lukgoh

我创建了一个插件,可以注册自定义的帖子类型。我想从插件加载自定义帖子类型的自定义页眉和页脚。

经过一些google研究后,我发现无法使用get\\u header()加载,因此我尝试使用:

<?php get_template_part(\'header\', \'trademanager\'); ?>
我现在看到的与使用get\\u header()完全相同,因此它显然失败了。codex已将我指向load\\u template()https://codex.wordpress.org/Function_Reference/load_template

我真的不知道如何使用它,有人能帮我弄清楚吗?

我的自定义主题文件是header trademanager。php和位于插件/模板中

5 个回复
最合适的回答,由SO网友:Пашка 整理而成

老问题,但也许我的回答会帮助别人。

简而言之,答案是:

使用load_template() 函数的第一个参数是完整的文件服务器路径。

长答案:

get_header() 使用函数locate_template() 使用该函数的load_template() 使用该函数的require_once(). 因此,要从插件或任何其他目录加载标题布局,可以直接使用require_once() 如果全局变量$post$wp_querynot 需要,否则,请使用load_template() 函数将完整的服务器路径作为第一个参数传递给文件。

<小时>P.S。

要获得更多的确定性,您可以查看这些文件wp-includes/general-template.phpwp-includes/template.php, 包含所有这些函数。你会发现它们没有复杂的逻辑,一切都很简单。使用标准功能更好的唯一原因是支持。对WP代码开发的支持由开发人员团队承担,您自己的功能由您自己承担。

但在这种情况下,当你需要自己的header 文件-这可能是一个合理的解决方案。

SO网友:janh

我不相信您可以将get\\u header/get\\u footer的加载文件更改为样式表/主题目录之外的内容。

如果您将标题设置为trademanager。主题文件夹中的php,get_header("trademanager") 应该有用。

我原本希望看到在get\\u头或locate\\u模板中的某个地方应用一个过滤器,但现在似乎还不能自定义。

SO网友:Milan Petrovic

没有可用于更改标头模板位置的筛选器。您可以更改模板的名称,但它必须位于主题或子主题目录中。这与可以过滤的所有其他主题模板不同,页眉和页脚模板必须位于主题或子主题文件夹中。

函数load\\u template()没有用于更改文件路径的筛选器。

SO网友:Mark Kaplun

一般来说,除了小部件和短代码之外,不应该在插件中处理前端。前端是主题的唯一责任。

你可以玩这个或那个钩子,有时会得到一些有用的东西,但它不太可能适用于所有主题。

最好的办法是利用page.phpsingle.php 主题的模板。为您的帖子类型加载它,并在那里操作任何可能的内容。尽管如此,这充其量只是为了能够有一些输出,但它实际看起来比您将测试它的几个主题更好的可能性很小。

SO网友:Jamie Edwards

由于标准的get\\u header和get\\u footer在插件中不起作用,您可以考虑简单地用PHP的include语句替换get\\u header()和get\\u footer,例如:

include \'header-trademanager.php\';

结束

相关推荐

Taxonomy Templates

我不太明白如何链接到我的分类法模板。我需要做一个临时页面并从那里查询我的条款吗?我当前正在使用分类层次结构:Taxonomy$labels = array( \'name\' => __( \'Product Categories\' ), \'singular_name\' => __( \'Product Category\' ), \'search_items\' =>