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?的主要内容,如果未能解决你的问题,请参考以下文章

如何打破 webpack 钩子中的循环

Wordpress nginx 重定向循环

说说WordPress的主查询函数-query_posts()

如何在 AngularJS 部分文件中使用 php (wordpress) 函数?

如何在自定义 .php 文件中包含 WordPress 函数?

WordPress主查询函数query_posts用法汇总