函数.php中的IS_PAGE_TEMPLATE&IS_PAGE不起作用

时间:2016-05-02 作者:public9nf

我使用以下脚本调用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 语句脚本加载到所有页面上。

1 个回复
最合适的回答,由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).

相关推荐