Как бы я ни старался, я не могу успешно зарегистрировать свою функцию в WordPress.
В настоящее время я сделал следующее:
Добавлен код в темах functions.php
function test_my_script() {
wp_register_script( 'custom-script', get_template_directory_uri() . '/js/gls-enable.js', array( 'jquery' ) );
wp_enqueue_script( 'custom-script' );
}
add_action( 'wp_enqueue_scripts', 'test_my_script' );
Добавлен мой скрипт в папку тем /js/gls-enable.js
jQuery(document).ready(function($) {
$("shipping_method_0_flat_rate").change(function () {
if ($("#shipping_method_0_flat_rate").is(":checked")) {
window.alert("sometext");
});
});
Называется мой скрипт на странице где я хочу чтобы он работал
<?php test_my_script(); ?>
Когда я просматриваю источник на упомянутой странице, сценарий нигде не встречается.
Вы хотите избавиться от register_script
:
function test_my_script() {
wp_enqueue_script( 'custom-script', get_template_directory_uri() . '/js/gls-enable.js', array( 'jquery' ) );
}
add_action( 'wp_enqueue_scripts', 'test_my_script' );
Кроме того, ваш скрипт будет автоматически помещен в очередь, когда 'wp_enqueue_scripts'
Хук действия называется. Вам не нужно явно вызывать его в своем шаблоне через php.
Там также ошибка в вашем синтаксисе jQuery. Так должно быть:
jQuery(document).ready(function(){
$("#shipping_method_0_flat_rate").change(function(){
if ( $("#shipping_method_0_flat_rate").is(":checked") ) {
window.alert("sometext");
}
});
});
Прежде всего вам не нужно называть это test_my_script()
внутри вашей страницы. Это крюк для wp_enqueue_scripts
и он автоматически загружается WordPress, и это означает, что ошибка должна быть в JavaScript.
Вот : $("shipping_method_0_flat_rate").
, добавить #
или же .
(если это идентификатор или имя класса);
Возможно, проблема в том, чтобы зарегистрировать это действие в php, поэтому лучше установить WP_DEBUG
в true
(корень вашего WordPress и редактировать wp-config.php
)
Если вы получили ошибки после установки WP_DEBUG
чтобы их решить, а также опубликуйте сообщение об ошибке в консоли (вы должны иметь: D)
И это хорошая практика, чтобы загрузить все файлы JavaScript в нижнем колонтитуле (этот файл загружается в заголовок). Может быть, JQuery находится в нижнем колонтитуле и gls-enable.js
загружается до jquery.
Чтобы загрузить это в нижний колонтитул:
wp_register_script( 'custom-script', get_template_directory_uri() . '/js/gls-enable.js', array( 'jquery' ), '1.0', true );