suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Rufen Sie Dateien aus dem angegebenen Pfad basierend auf der teilweisen Dateinamenübereinstimmung ab

Ich entwickle ein WordPress, das Gulp verwendet, um das Frontend der Anwendungsdateien (SCSS, JS) zu erstellen.

In meinem functions.php verwende ich Enqueue, um mein CSS und JS zu laden, damit sie im Editor verwendet werden können.

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__) );

} );

Beim Ausführen eines einfachen gulp 命令我可以执行上述操作,因为该文件将被命名为 main.css。但是,我面临一个问题,当我使用 gulp --product werden Stile und Javascript mit zufälligen Werten angehängt.

Zum Beispiel wird meine main.scss (sobald ich den obigen Befehl ausführe) zu main-9acd4829.css.

Meine Frage ist, wie man aus einem bestimmten Verzeichnis eine Datei mit einem Dateinamen ähnlich main<whatever>.css erhält.

Ich habe versucht, so etwas wie

zu verwenden
get_theme_file_uri(glob('/dist/styles/main*.css'), __FILE__)

Aber gibt null zurück

P粉194919082P粉194919082265 Tage vor574

Antworte allen(1)Ich werde antworten

  • P粉885035114

    P粉8850351142024-04-04 10:35:14

    我想你必须在不同的文件夹中检查自己,灵感来自 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');
        }
        //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__) );
        }
    } );

    Antwort
    0
  • StornierenAntwort