wordpress 函数文件,如何循环 require_once?
Posted
技术标签:
【中文标题】wordpress 函数文件,如何循环 require_once?【英文标题】:wordpress function files, how to loop require_once? 【发布时间】:2014-03-02 16:42:39 【问题描述】:我正在尝试遍历 wordpress functions.php 文件中的一些 require_once 语句,如下所示
// Initial theme setup
require_once locate_template('/inc/init.php');
// Register widget areas
require_once locate_template('/inc/sidebar.php');
...
为什么下面的循环不起作用?
$theme_includes = array(
'/inc/init.php', // Initial theme setup
'/inc/sidebar.php', // Register widget areas
'/inc/scripts.php', // Register scripts and stylesheets
'/inc/nav.php', // Main navigation
'/inc/cleanup.php', // Cleanup
'/inc/customizer.php',
'/inc/template-tags.php', // Custom template tags
'/inc/extras.php', // No theme functions
'/inc/analytics.php' // Google Analytics
);
foreach ( $theme_includes as $include )
require_once locate_template( $include );
我没有收到错误消息,但文件没有加载
【问题讨论】:
如果在相对路径前添加 $_SERVER['DOCUMENT_ROOT'] 会发生什么? 我找到了解决方案.. 而不是locate_template
我使用get_template_directory()
,但仍然不知道为什么第一个版本不起作用
【参考方案1】:
如果你检查the Wordpress codex of locate_template()你会发现这个函数有3个参数:
locate_template( $template_names, $load, $require_once )
$template_names
: 应该是要搜索的文件/模板数组
对于
$load
: 布尔值,如果设置为 true,将在找到文件时加载文件
$require_once
: 布尔值,如果设置为 true 将使用 require_once php 函数加载文件
所以在这种情况下,您可以忘记 foreach,只需将数组作为第一个参数传递,并将其他两个参数设置为 true:
$theme_includes = array(
'/inc/init.php', // Initial theme setup
'/inc/sidebar.php', // Register widget areas
'/inc/scripts.php', // Register scripts and stylesheets
'/inc/nav.php', // Main navigation
'/inc/cleanup.php', // Cleanup
'/inc/customizer.php',
'/inc/template-tags.php', // Custom template tags
'/inc/extras.php', // No theme functions
'/inc/analytics.php' // Google Analytics
);
locate_template( $theme_includes, true, true );
【讨论】:
以上是关于wordpress 函数文件,如何循环 require_once?的主要内容,如果未能解决你的问题,请参考以下文章
说说WordPress的主查询函数-query_posts()
如何在 AngularJS 部分文件中使用 php (wordpress) 函数?