Intereting Posts
Как создать видеоизображение из изображений через плагин WordPress Как проверить, является ли родитель текущей страницы одним из двух разных идентификаторов Поместить содержимое внутри столбца Карта сайта google xml не будет работать с установкой каталога Перечисление дочерних терминов родительского термина Как заказывать сообщения по количеству Vimeo Likes Пользовательский тип сообщения / настраиваемые поля Отображать hReviews с других сайтов, таких как визг на вашем сайте? Плагин Подробнее WordPress / users / me запрещен запрос конечной точки Использование meta_values ​​базы данных для расчета нового почтового заказа с использованием pre_get_posts или крюка запроса Мне нужно создать страницу архива, которая группирует результаты по таксономии или acf и фильтруется Выбрать категорию в пользовательском запросе Публикация сообщения и создание дополнительных сообщений с одним контентом Обновление настроек администратора при каждом удалении домашней страницы?

Использование wp_enqueue_script в скриптах, содержащих PHP

Я работаю на веб-сайте WooCommerce и все мои jQuery в нижнем колонтитуле внутри тегов скриптов. Я использую PHP для фильтрации необходимых сценариев для любой конкретной страницы.

Однако я хотел бы использовать предложенный метод использования wp_enqueue_script для загрузки моего jquery. Беда в том, что скрипты, содержащие PHP, не работают, если я не wp_localize_script какие-либо переменные PHP в его скрипт, используя wp_localize_script , который работает … в основном.

Я вызываю enqueue в my functions.php, используя wp_enqueue_scripts hook, но некоторые из переменных PHP недоступны, когда я регистрирую скрипт. Некоторые глобальные переменные есть, но некоторые из моих пользовательских переменных, которые определены ниже в строке, пусты, когда я пытаюсь получить к ним доступ через localize_script .

Я надеюсь, что это имеет смысл? Если да, то как я буду делать это правильно?

Например, предположим, что некоторые PHP-переменные определены в конкретном шаблоне страницы. Эти переменные не будут доступны, если я установлю скрипт с помощью упомянутого выше крючка. Как я могу поставить в очередь скрипт, который имеет доступ ко всем переменным PHP, определенным на странице?

Фактический код немного сложный, поэтому старайтесь упростить: –

В моих functions.php у меня есть следующее: –

 function wp_enqueue_woocommerce_style(){ $array = array( "var1" => <?php echo $var1 ?>, "var2" => <?php echo $var2 ?> ); wp_register_script('chroma_js', get_template_directory_uri() . '/js/chroma.js', '', '1.1', TRUE); wp_enqueue_script('chroma_js'); wp_localize_script( "chroma_js", "php_vars", $array); } add_action( 'wp_enqueue_scripts', 'wp_enqueue_woocommerce_style',99 ); 

Который вставляет мой скрипт в нижний колонтитул. Тем не менее, 2 переменные PHP определены в функции, которую я подключаю к 'woocommerce_before_single_product'. Когда я пытаюсь получить доступ к var1 & var2 в моем скрипте, они не определены. Любые переменные PHP, которые уже определены, когда я вызываю очередь, работают нормально. Итак, я не уверен, как перейти к передаче этих переменных в установленный сценарий.

Solutions Collecting From Web of "Использование wp_enqueue_script в скриптах, содержащих PHP"

Если вы выводите скрипт в нижнем колонтитуле, вы можете вызвать wp_localize_script в любой момент после того, как ваш скрипт установлен в очередь, но до того, как скрипт будет wp_footer приоритет wp_footer 20.

 function wp_enqueue_woocommerce_style(){ wp_enqueue_script( 'chroma_js', get_template_directory_uri() . '/js/chroma.js', '', '1.1', true ); } add_action( 'wp_enqueue_scripts', 'wp_enqueue_woocommerce_style' ); function wp_localize_woocommerce_style(){ $array = array( 'var1' => $var1, 'var2' => $var2 ); wp_localize_script( 'chroma_js', 'php_vars', $array ); } add_action( 'wp_footer', 'wp_localize_woocommerce_style', 0 ); 
 <?php // Register the script wp_register_script( 'some_handle', 'path/to/myscript.js' ); // Localize the script with new data $translation_array = array( 'some_string' => __( 'Some string to translate', 'plugin-domain' ), 'a_value' => '10' ); wp_localize_script( 'some_handle', 'object_name', $translation_array ); // Enqueued script with localized data. wp_enqueue_script( 'some_handle' ); 

Вы можете получить доступ к переменным в JavaScript следующим образом:

 <script> // alerts 'Some string to translate' alert( object_name.some_string); </script> Note: The data in the resulting JavaScript call will be passed as text (see ticket #25280). If you are trying to pass integers you will need to call the JavaScript parseInt() function. <script> // Call a function that needs an int. FinalZoom = map.getBoundsZoomLevel( bounds ) - parseInt( object_name.a_value, 10 ); </script> 

Я недавно использовал этот код, чтобы получить переменную в пути изображения заголовка. Добавьте эту функцию к своим функциям.php:

 function img() { return get_template_directory_uri().'/assets/img/'; } 

и используйте это в своем header.php следующим образом:

 <img src="<?php echo img(); ?>my-image.jpg">