Intereting Posts
Создать сообщение, могут ли авторы быть заказаны по фамилии? Как отправить сообщение в сложный слайдер Почему мой плагин был отклонен из репозитория WordPress.org? Что не так с functions.php? Заполняет журнал ошибок с одинаковой ошибкой Скрытие всех сообщений / продуктов / страниц с сайта на основе пользовательской таксономии / имени домена Выполняется только первый короткий код Использование управления вставкой изображения в коде Ошибка базы данных: команды не синхронизированы Условное на пользовательском поле плагин metabolox Пользовательские типы сообщений. Можете ли вы добавить несколько столбцов в переменную? Когда вы удаляете сообщение, также комментарии связанные с мусором Есть ли способ установить единственные / множественные метки для имен терминов таксономии? Как переопределить файлы шаблонов родительских тем? Два почти идентичных пользовательских типа поля – один работает, другой – нет. Что может вызвать это? Customizer: Как вы добавляете HTML для управления ярлыками?

Использование 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">