стиль очереди и js файл независимо от его имени - PullRequest
1 голос
/ 05 февраля 2020

Я пытаюсь выяснить, есть ли способ в WordPress поставить в очередь как css, так и js в файле функций независимо от его имени файла. Я компилирую sass и es6 / js в чистые css и es5 / js и добавляю случайную строку к имени файла, чтобы предотвратить проблемы с кешем. Например, есть ли решение, в котором вы можете поставить в очередь файл как шаблон. Это всегда только один css и один js файл, но имя меняется после компиляции.

wp_enqueue_style('my-theme', 'path/file.39483908.css', false );

, где я хочу, чтобы 39483908 был подстановочным знаком.

Любое решение

1 Ответ

0 голосов
/ 05 февраля 2020

Во-первых, позвольте мне сказать, что я верю, что вы поступаете неправильно, я объясню через минуту. Вероятно, есть способ сделать то, что вы хотите, но он не идеален и подвержен проблемам (оставшиеся файлы мешают, отслеживание версий усложняется и т. Д. c.)

Теоретически вы можете использовать Функция PHP glob() позволяет получить файлы css / js в каталоге и загрузить их. Что-то вроде:

foreach( glob( get_stylesheet_directory() . '/patch/file.*.css' ) as $file ){
    // enqueue them "all" (hopefully one…) here.
}

Тем не менее, я хочу остановиться на том, что я думаю, возможно, лучший способ сделать это, и это использовать аргумент $version для wp_enqueue_style() и wp_enqueue_script(). На самом деле это «подходящий» способ сделать это. «Легким» способом было бы просто увеличивать $ver каждый раз, когда вы меняете его:

wp_enqueue_style( 'my-style', 'link/to/style.css', array(), '1.0.1' );

Однако я не оставлю вам необходимости вручную изменять это $ver число, как какое-то пещерный. Каждый раз, когда вы щелкаете по этой маленькой иконке дискеты и сохраняете (или перекомпилируете) файл, он получает полезный бит данных, которые PHP может получить, называемый «время изменения файла».

Использование * Функция 1058 * filemtime() в аргументе $ver позволяет добавить измененное время файла (в формате отметки времени) к sr c (через строку запроса), так что при любом изменении оно будет иметь новая временная метка, обходящая любое кеширование! Я часто использую версию следующего кода (например, на большинстве сайтов / программ, которые я создаю с помощью WordPress):

wp_enqueue_style( 'my-style', get_stylesheet_directory_uri() . 'css/my-style.css', array(), filemtime( get_stylesheet_directory() . 'css/my-style.css' ) );

Обратите внимание, что вам понадобится URI для аргумента $src и PATH для аргумента $ver, поэтому я использовал get_stylesheet_directory_uri() и get_stylesheet_directory() в мой пример соответственно. В зависимости от вашей темы / плагина / структуры MU-Plugin, их, возможно, потребуется изменить, но просто убедитесь, что URI слева, а PATH справа.

Конечный результат в HTML в конечном итоге будет выглядеть так:

<link rel='stylesheet' id='my-style-handle' href='https://example.com/wp-content/themes/my-theme/css/my-style.css?ver=1580412541' type='text/css' media='all' />

А когда вы сохраните / перекомпилируете / перезагрузите свой CSS, параметр ?ver= изменится:

<link rel='stylesheet' id='my-style-handle' href='https://example.com/wp-content/themes/my-theme/css/my-style.css?ver=1580546830' type='text/css' media='all' />

Так ваши браузеры относитесь к нему как к новому файлу, предотвращая любые проблемы с кэшированием - и теперь вы получаете бонус за возможность вести надлежащие записи отслеживания версий вашего файла my-style.css вместо my-style.1235465.css, my-style.0489438.css, my-style.66223561.css, et c. и др c.

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