无论我怎么努力,我都无法用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(); ?>
当我在提到的页面上查看源代码时,无法在任何地方找到该脚本。
答案 0 :(得分:0)
您想要摆脱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");
}
});
});
答案 1 :(得分:0)
首先,您无需在页面中调用test_my_script()
。它是wp_enqueue_scripts
的一个钩子,它由wordpress自动加载,这意味着错误应该在javascript上。
在此处:$("shipping_method_0_flat_rate").
,添加#
或.
(如果是id或类名);
也许问题是在php中注册该操作,所以最好将WP_DEBUG
设置为true
(wordpress的root并编辑wp-config.php
)
如果在将WP_DEBUG
设置为true后遇到一些错误,并将错误发布到控制台内(您应该有:D)
加载al javascript files in footer是一个很好的做法(此文件在标题中加载)。也许jquery在页脚中,gls-enable.js
在jquery之前加载。
要在页脚中加载:
wp_register_script( 'custom-script', get_template_directory_uri() . '/js/gls-enable.js', array( 'jquery' ), '1.0', true );