如何在子主题中正确出列脚本和样式?

时间:2015-05-31 作者:Mayeenul Islam

我在我的一个项目中创建了父主题和子主题。我将CSS和JavaScripts放入父主题中,如下所示:

function project_necessary_scripts() {
    //Stylesheets
    wp_register_style( \'bootstrap-css\', get_template_directory_uri() .\'/css/bootstrap.min.css\' );
    wp_register_style( \'bootstrap-map\', get_template_directory_uri() .\'/css/bootstrap.css.map\' );
    wp_register_style( \'project-css\', get_stylesheet_uri() );

    wp_enqueue_style( \'bootstrap-css\' );
    wp_enqueue_style( \'bootstrap-map\' );
    wp_enqueue_style( \'project-css\' );

    //JavaScripts
    wp_register_script( \'modernizr-js\', get_template_directory_uri() .\'/js/modernizr-2.8.3.min.js\', array(), \'2.8.3\' );
    wp_register_script( \'project-js\', get_template_directory_uri() .\'/js/project.min.js\', array(\'jquery\'), \'20150401\', true );

    wp_enqueue_script( \'modernizr-js\' );
    wp_enqueue_script( \'project-js\' );
}
add_action( \'wp_enqueue_scripts\', \'project_necessary_scripts\' );
现在,在我的Child theme 我想把一些样式表和Javascript排出队列。因此,我使用了以下代码:

function project_dequeue_unnecessary_scripts() {
    wp_dequeue_style( \'bootstrap-map\' );
    wp_dequeue_script( \'modernizr-js\' );
    wp_dequeue_script( \'project-js\' );
}
add_action( \'wp_print_scripts\', \'project_dequeue_unnecessary_scripts\' );
但实际上bootstrap.css.map 文件仍在排队,但modernizr js项目js没有加载,所以它部分工作。我怎样才能解决这个问题?

我甚至尝试了行动重点:

add_action( \'wp_print_scripts\', \'project_dequeue_unnecessary_scripts\', 11 );

3 个回复
最合适的回答,由SO网友:Mayeenul Islam 整理而成

您离解决方案非常近,因为您走的是正确的道路。只是稍微调整一下:

有两个这样的动作挂钩:

  1. wp_print_scripts, 和wp_print_styles

    //Dequeue Styles
    function project_dequeue_unnecessary_styles() {
        wp_dequeue_style( \'bootstrap-map\' );
            wp_deregister_style( \'bootstrap-map\' );
    }
    add_action( \'wp_print_styles\', \'project_dequeue_unnecessary_styles\' );
    
    //Dequeue JavaScripts
    function project_dequeue_unnecessary_scripts() {
        wp_dequeue_script( \'modernizr-js\' );
            wp_deregister_script( \'modernizr-js\' );
        wp_dequeue_script( \'project-js\' );
            wp_deregister_script( \'project-js\' );
    }
    add_action( \'wp_print_scripts\', \'project_dequeue_unnecessary_scripts\' );
    
    正确的方法是在退队的同时取消他们的注册。因此,首先将其出列,然后相应地取消注册。

SO网友:Morshed Alam Sumon

这不是正确的方法。WordPress表示,自WordPress 3.3以来,不要同时使用wp\\u print\\u脚本和wp\\u print\\u样式。

无论您是排队还是退队,正确的方法是:

function project_dequeue_unnecessary_scripts() {
    wp_dequeue_style( \'bootstrap-map\' );
    wp_dequeue_script( \'modernizr-js\' );
}
add_action( \'wp_enqueue_scripts\', \'project_dequeue_unnecessary_scripts\', 100 );
不要忘记使用优先级。如果没有优先权,它将无法工作。

SO网友:Chandra Shekhar Pandey

对于出列脚本,不要添加最后一个-js“;或“或”-css“;在ID部件上。我用的是WordPress 5.8。这对我有用。

上述代码:

//Dequeue JavaScripts
function project_dequeue_unnecessary_scripts() {
    wp_dequeue_script( \'modernizr-js\' );
        wp_deregister_script( \'modernizr-js\' );
    wp_dequeue_script( \'project-js\' );
        wp_deregister_script( \'project-js\' );
}
add_action( \'wp_print_scripts\', \'project_dequeue_unnecessary_scripts\' );

工作代码:

//Dequeue JavaScripts
function project_dequeue_unnecessary_scripts() {
    wp_dequeue_script( \'modernizr\' );
        wp_deregister_script( \'modernizr\' );
    wp_dequeue_script( \'project\' );
        wp_deregister_script( \'project\' );
}
add_action( \'wp_print_scripts\', \'project_dequeue_unnecessary_scripts\' );
确保首先查看脚本id的页面源以删除-js“;部分删除last-仅js。

例如:如果您的脚本ID是project js js,则删除最后一个-js 仅对出列操作使用project js。CSS也是如此,请删除最后一个"-css" 部分

结束

相关推荐

包含第一个参数ADMIN_PRINT_SCRIPTS-$PAGE的Add_action

在这里我不明白传递的意义是什么$page 是否使用admin\\u print\\u脚本?我的代码如下:$page = add_submenu_page(\'edit.php?post_type=\' . $post_type, __(\'text\', \'plugin-dir-name\'), __(\'text\', \'plugin-dir-name\'), \'edit_posts\', \'text_\' . $post_type, array(&$this, \'text_list