Я работаю над магазином WooCommerce, используя Twenty Twenty-Five в качестве темы дочернего блока (полное редактирование сайта). У меня есть небольшой собственный скрипт (product.js), который следует запускать только на страницах отдельных продуктов, без необходимости загружать его в сообщения блога, архивы, корзину и т. д.
Код: Выделить всё
functions.php:
add_action( 'wp_enqueue_scripts', function() {
if ( is_product() ) {
wp_enqueue_script(
'custom-product',
get_stylesheet_directory_uri() . '/js/product.js',
array( 'jquery' ),
filemtime( get_stylesheet_directory() . '/js/product.js' ),
true
);
}
} );
Я читал, что темы блоков обрабатывают загрузку скриптов по-другому (отложенно через рендеринг wp_head/wp_footer), и существует wp_enqueue_block_script(), но я не могу понять, как сделать его условным на основе is_product().
Что мне нужно:
- Загружать product.j только тогда, когда is_product() истинно
- Нет логики PHP в выводе HTML (поэтому полностраничный кеш остается чистым)
- Работает с темами блоков FSE + WooCommerce 9.4+
Есть ли в этом отношении передовой опыт на 2025 год? Может быть, использовать wp_register_script + какой-нибудь атрибут данных или более разумный способ с дескрипторами блочных сценариев? Хотелось бы получить чистый, удобный для кэширования пример, если он у кого-нибудь есть.
Заранее спасибо
Подробнее здесь: https://stackoverflow.com/questions/798 ... th-a-block
Мобильная версия