Maison  >  Questions et réponses  >  le corps du texte

Récupère les fichiers à partir du chemin spécifié en fonction d'une correspondance partielle du nom de fichier

Je développe un WordPress qui utilise gulp pour créer le frontend des fichiers de l'application (scss, js).

Dans mon functions.php, j'utilise la mise en file d'attente pour charger mes CSS et JS afin qu'ils puissent être utilisés dans l'éditeur.

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

} );

Lors de l'exécution d'un simple gulp 命令我可以执行上述操作,因为该文件将被命名为 main.css。但是,我面临一个问题,当我使用 gulp --product, les styles et javascript seront suffixés avec des valeurs aléatoires.

Par exemple, mon main.scss deviendra (une fois que j'aurai exécuté la commande ci-dessus) main-9acd4829.css.

Ma question est la suivante : comment puis-je obtenir un fichier d'un certain répertoire avec un nom de fichier similaire à main<whatever>.css.

J'ai essayé d'utiliser quelque chose comme

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

Mais renvoie null

P粉194919082P粉194919082222 Il y a quelques jours494

répondre à tous(1)je répondrai

  • P粉885035114

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

    Je pense que vous devez vous enregistrer dans un dossier différent, inspiré du code de get_theme_file_uri , quelque chose comme ceci (notez que glob 返回一个数组,而 get_theme_file_uri accepte une chaîne) :

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

    répondre
    0
  • Annulerrépondre