2014-02-05 50 views
0

我公司通過在WordPress functions.php文件的一些require_once語句看起來像這樣wordpress函數文件,如何循環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); 
} 

我沒有得到任何錯誤消息,但如果你檢查the Wordpress codex of locate_template()你會發現功能的文件不加載

+0

如果您在相對路徑前加** $ _ SERVER [「DOCUMENT_ROOT」] **會發生什麼? – ggdx

+0

我找到了解決方案..而不是'locate_template'我使用'get_template_directory()',但仍然不知道爲什麼第一個版本不工作 – user3277441

回答

0

需要3個參數:

locate_template($template_names, $load, $require_once) 
  1. $template_names:應該是一個數組要搜索的文件/模板 for
  2. $load:布爾值,if設置爲true,會加載發現
  3. $require_once當文件(S):布爾,如果用放在require_once PHP函數在這種情況下設置爲true,將加載文件(S)

所以,你可以對忘記的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);