如何始终相对于我正在使用的文件使用GET_TEMPLATE_PART?

时间:2017-10-11 作者:grazianodev

我有以下文件结构(简化):

— app
  — header.php
  - views
    - header-default.php
在标题中。php,我正在使用get_template_part 具体如下:

<?php get_template_part( \'app/views/header/header\', \'default\' ); ?>
这是可行的,但假设将来我需要更改文件夹结构或只是重命名“app”文件夹。它不会再工作了。我该怎么做get_template_part 总是相对于我使用它的文件?我试过:

<?php get_template_part( __DIR__ . \'/views/header/header\', \'default\' ); ?>
但它不起作用。我猜Wordpress总是使用根目录作为解释路径的起点。我有什么选择?

2 个回复
最合适的回答,由SO网友:AddWeb Solution Pvt Ltd 整理而成

wordpress中只有一个函数get\\u template\\u directory(),可以提供主题的路径。但并没有任何函数给出主题内文件夹的目录路径。

有两种方法可以动态获取模板的目录路径,每当文件夹结构发生更改时,只需在一个位置进行更新:

1) 您可以创建自定义配置变量来存储模板目录路径,并且无论何时您想要包含模板,都可以从配置变量获取路径并将其包含在内:

在wp配置中。php:

<?php define(\'TEMPLATE_DIR_PATH\',\'path to your template path\'); ?>
在您的文件中(您想在其中包含模板),您可以包括:

<?php get_template_part( TEMPLATE_DIR_PATH.\'/header\', \'default\' ); ?>
2)另一种方法是在函数中创建自定义函数。活动主题的php文件,该文件将返回模板目录的路径:

在功能中。php

<?php
function get_template_file_directory_path(){
        return "path to your template path"
}
?>
在您的文件中(您想在其中包含模板),您可以包括:

<?php get_template_part( get_template_file_directory_path().\'/header\', \'default\' ); ?>
希望这对你有帮助。

SO网友:Milan Petrovic

此函数按子主题(如果使用)和主主题内的路径搜索模板。因为插件和主题依赖于它,所以不能改变它的工作方式。

唯一的解决方案是编写自己的函数,并使其按照您想要的方式相对于当前模板加载模板。然后使用函数。

结束

相关推荐

为什么WordPress多站点重定向到wp-signup.php,以及如何修复它?

我最近在Wordpress multisite上建立了第二个博客。Multisite上的主要博客是www.example.com, 我两天前建立的第二个博客是www.example2.org.不幸的是www.example2.org, WordPress重定向到https://www.example.com/wp-signup.php?new=在同一台服务器上,我设置了相应的测试多站点,其中test.example.com 作为主要博客和test.example2.org 第二个博客。它正在毫无问题地工作