我正在父主题中加载一些JavaScript文件。父主题中的路径为:
scripts > custom.js
在儿童主题中,我创建了相同的路径(scripts > custom.js
) 以及在custom.js
文件问题是没有应用更改。在子主题中更改这些文件的方式是否错误?
我正在父主题中加载一些JavaScript文件。父主题中的路径为:
scripts > custom.js
在儿童主题中,我创建了相同的路径(scripts > custom.js
) 以及在custom.js
文件问题是没有应用更改。在子主题中更改这些文件的方式是否错误?
子主题仅覆盖包含在get\\u template\\u part或get\\u header等函数中的php文件(如header.php)。
向WordPress添加脚本的正确方法是wp_enqueue_script. 如果父主题使用此选项,则可以使用wp_dequeue_script 让你自己排队。
就像这样。。。
<?php
// hook in late to make sure the parent theme\'s registration
// has fired so you can undo it. Otherwise the parent will simply
// enqueue its script anyway.
add_action(\'wp_enqueue_scripts\', \'wpse26822_script_fix\', 100);
function wpse26822_script_fix()
{
wp_dequeue_script(\'parent_theme_script_handle\');
wp_enqueue_script(\'child_theme_script_handle\', get_stylesheet_directory_uri().\'/scripts/yourjs.js\', array(\'jquery\'));
}
如果父主题没有使用wp\\u enqueue\\u脚本,那么它可能会挂接到wp\\u head(或wp\\u footer)以在那里呼出脚本。所以你会使用remove_action 要摆脱那些回显脚本的函数,然后将自己的脚本排入队列。如果脚本是硬编码到模板文件中的,则只需在子主题中替换该模板文件,而不需要使用script标记。
如果他们使用wp\\u enqueue\\u脚本调用get_stylesheet_directory_uri, 那你什么都不用做。既然这没有发生,你只需要四处看看主题作者做了什么。
在某些情况下,重要的是对add\\u操作和wp\\u enqueue\\u脚本函数调用进行优先级排序,如下所示:
add_action(\'wp_enqueue_scripts\', \'wpse26822_script_fix\', 20120207);
function wpse26822_script_fix()
{
wp_dequeue_script(\'storefront-navigation\');
wp_enqueue_script(\'my_storefront-navigation\', get_stylesheet_directory_uri().\'/js/navigation.min.js\', array(\'jquery\'),20151110,true);
}
在这种情况下,wp\\u enqueue\\u脚本由优先级为20120206(日期)的父级调用,因此此操作添加的优先级略高,因此将立即退出队列。然后,后面的enqueue语句实际上会在之后进行优先级排序,以确保它在旧语句退出队列后加载。在本例中,true也很重要,因为它指定要在页脚中排队,而页脚是父脚本第一次排队的地方。此外,我不能完全解释它,但我注意到,如果您在初始脚本排队后立即小心地将其退出队列,那么您似乎可以从一开始就有效地阻止它加载。
呼叫wp_deregister_script 在注册自己的版本之前
// enqueue your required script file
add_action(\'wp_enqueue_scripts\', \'your_child_theme_js_file_override\');
function your_child_theme_js_file_override(){
wp_enqueue_script( \'child_theme_script_handle\', get_stylesheet_directory_uri() . \'/assets/js/your-file.js\', array(\'jquery\' ) );
}
// dequeue your required script file
function your_child_theme_js_file_dequeue() {
wp_dequeue_script( \'parent_theme_script_handle\' );
}
add_action( \'wp_print_scripts\', \'your_child_theme_js_file_dequeue\', 100 );
自WordPress版本4.7以来,您可以使用“get\\u theme\\u file\\u uri()”,它将首先查找子主题文件夹,然后查找父主题文件夹。这样,子主题中的文件将按优先级排列。
wp_enqueue_script(\'custom-js\', get_theme_file_uri() . \'/scripts/custom.js\');