我使用以下脚本调用page-about.php
样板但它实际上不起作用。脚本无处执行:
// Load maps scripts
function maps_scripts()
{
// If query if current Page is not wp-login-php or admin page
if ( is_page_template(\'page-about.php\') ) {
wp_register_script(\'gmapsapi\', \'http://maps.google.com/maps/api/js?sensor=false\', array(), \'1.0.0\', true);
wp_enqueue_script(\'gmapsapi\');
wp_register_script(\'gmaps\', get_template_directory_uri() . \'/js/gmaps.min.js\', array(), \'1.0.0\', true);
wp_enqueue_script(\'gmaps\');
wp_register_script(\'map\', get_template_directory_uri() . \'/js/map.js\', array(), \'1.0.0\', true);
wp_enqueue_script(\'map\');
}
}
add_action(\'init\', \'maps_scripts\');
我也试过
is_page()
但它不起作用。当我删除
if
语句脚本加载到所有页面上。
最合适的回答,由SO网友:Max Yudin 整理而成
使用wp_enqueue_scripts
而是打开init
. 这将确保已加载模板。
add_action(\'wp_enqueue_scripts\', \'maps_scripts\');
或者尝试使用
get_page_template_slug()
而不是
is_page_template
:
$tmp = get_page_template_slug($post_id); // provide page/post ID
if(\'page-about.php\' == $tmp) {
// enqueue scripts here
}
请注意,在将脚本排入队列之前,不需要注册脚本。只需传递
wp_register_script
直接发送到
wp_enqueue_script
(请参见
Code Reference).