如何在header.php中动态包含我的定制主题的js和css文件

时间:2016-01-11 作者:Pritesh Poddar

我正在wordpress中创建一个简单的主题。问题是js和css文件夹中存在的资产数量在每种情况下都不相同,即。css文件夹中的css文件可能会更改,情况也是如此。js文件。我尝试使用php的scandir()函数读取目录,例如

    $files = scandir(get_template_directory_uri().\'/js\');
还有

    $files = scandir(\'js\');
当我在头中编写代码时。php。看文件时运气不好。任何帮助都将不胜感激。我还对我的wp内容文件夹授予了777完全权限。

1 个回复
最合适的回答,由SO网友:WPTC-Troop 整理而成

我猜你想把主题的css和js目录中的所有文件排队。这就是您尝试使用scandir(). get_template_directory_uri() 返回URL而不是目录路径。您需要使用get_template_directory() 用于目录。

如果您想这样做,那么就在函数中这样做。php

function enqueue_all_front_resources(){

   $js_directory = get_template_directory().\'/js/\';
   $all_js_files = array_diff(scandir($js_directory), array(\'..\', \'.\'));
   // to avoid .. and . from the scandir function i used array_diff

   //now add the js with wp_enqueue_script()
   foreach($all_js_files as $js_file){
     wp_enqueue_script( $js_file.\'-name\', get_template_directory_uri() . \'/js/\'.$js_file );
   }


   $css_directory = get_template_directory().\'/css/\';
   $all_css_files = array_diff(scandir($css_directory), array(\'..\', \'.\'));

   //now add the css with wp_enqueue_style()
   foreach($all_css_files as $css_file){
     wp_enqueue_style( $css_file.\'-name\', get_stylesheet_uri().\'/css/\'.$css_file );
   }

}

add_action(\'wp_enqueue_scripts\',\'enqueue_all_front_resources\');
Disadvantages 在这样做的时候

这样会添加不需要的资源,从而吃掉服务器和浏览器(许多文件请求和在浏览器中处理所有脚本都不会太慢)

  • 除非在文件名末尾使用dependency命名js文件,并在enqueue\\u脚本中解析添加依赖项,否则您无法正确给出依赖项,并且还需要注意排序
  • IWon\'t recommand 此方法。为了自动化的利益,我回答了这个问题。因为你的思维方式是动态的。动态是好的,但我们需要确保它将正确有效地工作。

    相关推荐