У меня есть следующий код в 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
принимает три аргумента:
wp_enqueue_script
$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
.