英文:
Get a file from path where file name LIKE
问题
I am developing a WordPress that utilises gulp to build the frontend of the application (scss, js) files.
In my functions.php
I am using enqueue to load my css and js so that they can be used in the editor.
add_action( 'enqueue_block_editor_assets', function() {
wp_enqueue_style( 'editor-styling', get_theme_file_uri( '/dist/styles/main.css', __FILE__) );
wp_enqueue_script( 'editor-scripts', get_theme_file_uri( '/dist/scripts/main.js', __FILE__) );
} );
Running a simple gulp
command, I can do the above as the file will be named main.css
. However, I am facing an issue that when I use gulp --production
, the style and JavaScript are suffixed with a random value.
For example, my main.scss
will (once I run the above command) turn into main-9acd4829.css
.
My question is, how can I get a file from a certain directory where the file name is like main<whatever>.css
.
I have tried using something such as:
get_theme_file_uri(glob('/dist/styles/main*.css'), __FILE__)
However, that returned null.
英文:
I am developing a WordPress that utilises gulp to build the frontend of the application (scss, js) files.
In my functions.php
I am using enqueue to load my css and js so that they can be used in the editor.
add_action( 'enqueue_block_editor_assets', function() {
wp_enqueue_style( 'editor-styling', get_theme_file_uri( '/dist/styles/main.css', __FILE__) );
wp_enqueue_script( 'editor-scripts', get_theme_file_uri( '/dist/scripts/main.js', __FILE__) );
} );
Running running a simple gulp
command I can do the above as the file will be named main.css
. However, I am facing an issue that when I use gulp --production
the style and javascript are suffixed with a random value.
For example my main.scss will (once I run the above command) turn into main-9acd4829.css
.
My question is, how can I get a file from a certain directory where file name like main<whatever>.css
.
I have tried using something such as
get_theme_file_uri(glob('/dist/styles/main*.css'), __FILE__)
However that returned null
答案1
得分: 1
我猜你需要检查不同文件夹中的内容,受到 get_theme_file_uri 代码的启发,类似于以下方式(注意 glob
返回一个数组,而 get_theme_file_uri
需要一个字符串):
add_action('enqueue_block_editor_assets', function() {
$style_file = glob(get_stylesheet_directory() . '/dist/styles/main*.css');
if (!$style_file || !count($style_file)) {
$style_file = glob(get_template_directory_uri() . '/dist/styles/main*.css');
}
//注意:如果您的 glob 返回多个文件并且这是您想要的,您可以使用 foreach
//注意2:理论上,您可以跳过此处对 get_theme_file_uri 的使用,因为您已经测试了它在哪个文件夹,这只是一个示例
if ($style_file && count($style_file)) {
wp_enqueue_style('editor-styling', get_theme_file_uri('/dist/styles/' . $style_file[0], __FILE__));
}
$script_file = glob(get_stylesheet_directory() . '/dist/scripts/main*.js');
if (!$script_file || !count($script_file)) {
$script_file = glob(get_template_directory_uri() . '/dist/scripts/main*.js');
}
//注意:如果您的 glob 返回多个文件并且这是您想要的,您可以使用 foreach
//注意2:理论上,您可以跳过此处对 get_theme_file_uri 的使用,因为您已经测试了它在哪个文件夹,这只是一个示例
if ($script_file && count($script_file)) {
wp_enqueue_script('editor-scripts', get_theme_file_uri('/dist/scripts/' . $script_file[0], __FILE__));
}
});
英文:
I guess you have to check yourself in the different folders, inspired by the code of get_theme_file_uri, something like this (note that glob
returns an array while get_theme_file_uri
takes a string):
add_action( 'enqueue_block_editor_assets', function() {
$style_file = glob(get_stylesheet_directory() . '/dist/styles/main*.css');
if(!$style_file || !count($style_file)){
$style_file = glob(get_template_directory_uri() . '/dist/styles/main*.css');
}
//NOTE: you can use foreach if your glob returns multiple files and this is what you want
//NOTE2: in theory you could skip the use of get_theme_file_uri here because you already tested in which folder it is, this is just an example
if($style_file && count($style_file)){
wp_enqueue_style( 'editor-styling', get_theme_file_uri( '/dist/styles/' . $style_file[0], __FILE__) );
}
$script_file = glob(get_stylesheet_directory() . '/dist/scripts/main*.js');
if(!$script_file || !count($script_file)){
$script_file = glob(get_template_directory_uri() . '/dist/scripts/main*.js');
}
//NOTE: you can use foreach if your glob returns multiple files and this is what you want
//NOTE2: in theory you could skip the use of get_theme_file_uri here because you already tested in which folder it is, this is just an example
if($script_file && count($script_file)){
wp_enqueue_script( 'editor-scripts', get_theme_file_uri( '/dist/scripts/' . $script_file[0], __FILE__) );
}
} );
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论