Как задавать переменные JS из админки Wordpress?

Для php я создавал специальную страницу настроек в Wordpress, в которой администратор сайта мог указывать переменные параметров и эти переменные выводились бы специальным кодом в нужном месте сайта. Например, есть калькулятор на php. Чтобы админу не лезть в код, он просто заходит в админку, указывает значения переменных калькулятора, меняет цены и всем удобно, всем хорошо.
Сейчас у меня калькулятор на JS. Можно ли как-то аналогично вывести переменные в админку, чтобы админу не пришлось лезть в сам скрипт для изменений?
  • Вопрос задан
  • 1160 просмотров
Решения вопроса 2
Apathetic
@Apathetic
Frontend
Чертовщина какая-то. Зачем локализатор-то использовать, господа? Он нужен, не побоюсь этих слов, для локализации, для перевода. А для вещей, которые хочет сделать ТС, существует такая штука, как JSON.
  1. Создаёте в php массив с нужными параметрами.
  2. json_encode
  3. Выводите это всё через wp_head
  4. В JS делаете JSON.parse и радуетесь жизни

Так (в смысле - используют json для передачи переменных в JS) делает Google, так делает Stackoverflow (смотрите исходный код), так делают все нормальные люди. И вы так делайте.
Ответ написан
dimasmagadan
@dimasmagadan
не обязательно использовать произвольные поля.
если значения хранятся у вас в опциях, выводите их сразу из опций.

страницу с опциями можно создать тут:
wpsettingsapi.jeroensormani.com

если скрипт калькулятора у вас добавлен корректно (через wp_regisrer_script или wp_enqueue_script), то добавить переменную к этому скрипту нужно через wp_localize_script

добавлять лучше не по одной переменной, а сразу все в одном массиве. например так
wp_localize_script('main','os',array(
	'ajaxurl'=>admin_url('admin-ajax.php'),
	'tClose'=> __('Close (Esc)','text_domain'),
	'tLoading'=> __('Loading...','text_domain'),
	'tError'=> __('Unable to load <a href="%url%">link</a>.','text_domain'),
	'tPrev'=> __('Previous (left)','text_domain'),
	'tNext'=> __('Next (right)','text_domain'),
	'tCounter'=> __('%curr% from %total%','text_domain')
	)
);

в этому случае они будут доступны в таком виде
os.ajaxurl, os.tClose и тп

если же скрипт вы добавили напрямую, в код, то добавить переменные можно добавив action к wp_header. так делать не правильно, но, если по какой-то причине не можете сделать вывод скрипта через стандартные функции, подойдет.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
EaGames
@EaGames
Front-end developer
Произвольные поля + wp_localize_script

Пример использования через ACF
wp_localize_script('script_name', 'variable_name', get_field('field_name', 'options'));
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы