Как изменить порядок внутри foreach, используя wp_enqueue_script? - PullRequest
1 голос
/ 20 февраля 2020

Я создал a для каждого l oop, чтобы динамически загружать все файлы сценариев из папки сборки в нижний колонтитул для режима разработки и производства. Таким образом, мне не нужно вручную заменять файлы сценариев.

Но у меня проблема, я не знаю, как изменить порядок файлов на определенный c порядок.

Это должно быть: Runtime, Vendors, Main.

Это мой PHP код:

// First check if "JS" folder exist to prevent errors.
if(is_dir(THEME_DIR_ASSETS . '/js')) {
    // Enqueue all scripts.
    function nm_enqueue_scripts() {
    $directoryJS = new DirectoryIterator(THEME_DIR_ASSETS . '/js');

        wp_deregister_script('jquery');
        wp_enqueue_script('jquery', 'https://code.jquery.com/jquery-2.2.4.min.js', array(), null, false);

        foreach ($directoryJS as $file) {
            if (pathinfo($file, PATHINFO_EXTENSION) === 'js') {
            $fullName = basename($file);
            $name = substr(basename($fullName), 0, strpos(basename($fullName), '.'));

            wp_enqueue_script($name, THEME_DIR_JS . '/' . $fullName, $name, null, true);
            }
        }
    }
    add_action('wp_enqueue_scripts', 'nm_enqueue_scripts');
}

Как я могу это сделать?

1 Ответ

1 голос
/ 20 февраля 2020

Вам нужно будет указать зависимости каждого файла, чтобы иметь возможность ставить их в нужном порядке. Таким образом, в данных $ directory JS вы можете установить зависимости каждого сценария так, чтобы он выглядел следующим образом:

$directoryJS = [
[
'script_name' => 'some-name' 
'script_url' => 'path to script',
'deps' => [ 'other-file-name']
],
[
'script_name' => 'other-file-name' 
'script_url' => 'path to other script',
'deps' => [ ]
]
]

В операторе foreach функция сценария enqueue будет выглядеть следующим образом: wp_enqueue_script($script_name, THEME_DIR_JS . '/' . $fullName, $deps, '', true);.

В этом случае WP ставит в очередь сценарий «other-file-name» перед сценарием «some-name».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...