Использование php внутри javascript в wordpress

У меня есть следующий код в javascript (jquery) файле custom.js:

blabla = new Date(2014, 06 - 1, 2); $('.days').countdown({ until: blabla, layout: '{dn} {dl}', 

1. Теперь я хочу, чтобы пользователь мог изменить указанную дату. Я создал страницу параметров темы под названием theme-options.php

2. Я использую <?php require_once('theme-options.php'); ?> <?php require_once('theme-options.php'); ?> в функции.php для ссылки на тему-options.php.

3. Это тема-options.php:

 <?php add_action('admin_menu', 'director_create_menu'); function director_create_menu() { add_submenu_page( 'themes.php', ' Theme Options', 'Theme Options', 'administrator', __FILE__, 'director_settings_page'); add_action( 'admin_init', 'director_register_settings' ); } function director_register_settings() { register_setting( 'director-settings-group', 'director_date' ); } div class="wrap"> <h2>Theme Settings</h2> <form id="landingOptions" method="post" action="options.php"> <?php settings_fields( 'director-settings-group' ); ?> <table class="form-table"> <tr valign="top"> <th scope="row">Date:</th> <td> <input type="text" placeholder="2014, 06 - 1, 2" name="director_date" value="<?php print get_option('director_date'); ?>" /> </td> </tr> <p class="submit"> <input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" /> </p> </form> </div> <?php } ?> 

В основном, происходит то, что есть страница параметров темы. Пользователь вводит дату внутри нее. Теперь я хочу использовать эту дату в файле javascript. Если бы мне пришлось использовать его внутри index.php, это было бы

 <?php $date = get_option('director_date'); ?> <?php if( $date ) : ?> <?php echo $date; ?><?php endif; ?>); 

, Однако это javascript. Как я могу реализовать такое действие здесь?

Альтернативный путь, но по-прежнему не работает. Назовите custom.js для custom.php и добавьте:

  gapinvite = new Date(<?php $date = get_option('director_date'); ?> <?php if( $date ) : ?> <?php echo $date; ?><?php endif; ?>); $('.days').countdown({ until: gapinvite, layout: '{dn} {dl}', 

И в functions.php:

 <?php require_once('js/custom.php'); ?> 

Взгляните на wp_localize_script . Хотя он якобы для перевода, он позволяет передавать значения PHP в JS. Вот довольно хорошее пошаговое руководство по его использованию .

РЕДАКТИРОВАТЬ:

Во-первых, убедитесь, что вы загружаете JS, используя wp_enqueue_script , так как вам нужно будет обратиться к дескриптору . В вашем functions.php вас будет:

 $date = get_option('director_date'); wp_enqueue_script('my-script', get_stylesheet_directory_uri() . 'js/my-script.js'); wp_localize_script('my-script', 'my_script_vars', array( 'date' => $date ) ); 

wp_localize_script принимает три аргумента:

  1. Рукоятка скрипта для передачи объекта переменных. Это должно соответствовать дескриптору, используемому в wp_enqueue_script
  2. Имя объекта переменной, который вы хотите создать. Вы будете использовать это имя для ссылки на объект в JS
  3. Массив переменной, передаваемой объекту. Здесь я просто передаю переменную $date мы объявили ранее, но вы, очевидно, можете передать все, что захотите.

Затем в my-script.js вы получите доступ к этому объекту очень просто:

 var $date = my_scripts_vars.date; alert($date); // Or do whatever you want with it 

В index.php вы можете сделать что-то вроде:

 <?php $date = get_option('director_date'); ?> <script type="text/javascript">var generated_date = '<?php echo $date; ?>';</script> 

Просто убедитесь, что вы делаете это, прежде чем включать JavaScript, где вы хотите ссылаться на только что созданную переменную generated_date .