Можем ли мы каким-то образом использовать wp_localize_script () для создания глобальных переменных js без специального дескриптора сценария, к которому можно получить доступ из всех файлов js, даже если сценарии js не ставятся в очередь должным образом с помощью wp_enqueue_script?
Это код, который я использую, который создает varibale для дескриптора «ajaxscript», поэтому я не могу получить доступ к объекту «ajaxobject» в js-файле, который напрямую включается в header.php <script src="xxx" .... />
wp_register_script( 'ajaxscript', get_bloginfo( 'template_url' ) . '/js/ajaxscript.js', array(), $version );
wp_enqueue_script( 'ajaxscript' );
wp_localize_script( 'ajaxscript', 'ajaxobject',
array(
'ajaxurl' => admin_url( 'admin-ajax.php' ),
'ajaxnonce' => wp_create_nonce( 'itr_ajax_nonce' )
)
);
wp-enqueue-script
wp-localize-script
Subharanjan
источник
источник
wp_localize_script
делает в любом случае. С обоими методами переменные доступны из любого скриптаОтветы:
Вместо использования wp_localize_script в этом случае вы можете подключить переменные js к wp_head, чтобы они были доступны для всех файлов js, таких как:
Также, как предлагает @Weston Ruter, вы можете json кодировать переменные:
источник
json_encode
здесь, например:var ajaxurl = <?php echo json_encode( admin_url( "admin-ajax.php" ) ); ?>;
Как
wp_head
показано в ответах выше, вы можете экспортировать любые данные, которые вам нужны . Однако вы должны использоватьjson_encode
для подготовки данных PHP для экспорта в JS, а не пытаться встраивать необработанные значения в литералы JS:Использование
json_encode
упрощает работу и предотвращает случайные синтаксические ошибки, если в вашей строке есть кавычки. Еще важнее использованиеjson_encode
XSS-атак.источник
Я закончил тем, что делал это. Теперь работает !! Спасибо @ точка1
источник
json_encode
вместо ручного создания JSON.json_encode
сейчас :) Спасибо @WestonRuter !!Хотя это не самая лучшая моя работа, это еще один простой способ внести данные в ответ:
Добавьте некоторые данные JS в контекст окна:
Это будет работать как для скриптов заголовка, так и для скриптов нижнего колонтитула и не будет повторяться.
источник