我正在尝试创建一个子主题,并希望取消注册原始javascript并将自己的javascript排入队列。这是主题的原始javascript,但有点不同:)
我遇到的问题是,在父主题中,许多变量是使用:wp\\u localize\\u脚本“推”到JS的。
加载到父函数中的变量。php在我的子主题javascript中不可用。我猜这是因为装载顺序。WordPress首先加载子函数。php然后是家长。因此,首先加载javascript,然后加载变量。另外,当我将自己的javascript排入队列时,脚本会有一个不同的名称。
parent functions.php
$translation_array = array ( .... ) ;
wp_enqueue_script(\'jscript_custom\', get_template_directory_uri() . \'/js/jscript.custom.js\', array(\'jquery\'), null, true);
wp_localize_script(\'jscript_custom\', \'obj_jscript\', $translation_array);
child theme functions.php
..
wp_dequeue_script( \'jscript_custom\' );
..
wp_enqueue_script(\'jscript_custom_child\', get_stylesheet_directory_uri() . \'/js/jscript.custom.js\', array(\'jquery\'), null, true);
因此,父主题中的变量被推送到不再可用的javascript中。子主题的脚本不能与父主题同名。
有什么办法解决这个问题吗?谢谢,J
=== edit ===
**parent theme functions.php**
function parent_enqueue_scripts() {
wp_enqueue_script(\'jscript_custom\', get_template_directory_uri() . \'/js/jscript_custom\', array(\'jquery\'), null, true);
$translation_array = array(
... huge list of variables ...
\'tags_html\' => $tags_html,
\'u\' => $current_user->ID,
\'ui\' => $current_user->display_name,
\'ul\' => $current_user->user_nicename,
\'user_rewrite\' => $wp_rewrite->author_base
);
wp_localize_script(\'jscript_custom\', \'obj_jscript\', $translation_array);
}
add_action(\'wp_enqueue_scripts\', \'parent_enqueue_scripts\');
****child theme functions.php****
function remove_parent_scripts() {
wp_dequeue_script( \'jscript_custom\' );
}
add_action(\'wp_print_scripts\',\'remove_parent_scripts\');
function enqueue_parent_theme_style_and_js() {
wp_enqueue_style( \'parent-style\', get_template_directory_uri() . \'/style.css\' );
wp_enqueue_script(\'jscript_custom_child\', get_stylesheet_directory_uri() . \'/js/jscript.custom.js\', array(\'jquery\'), null, true);
}
add_action( \'wp_enqueue_scripts\', \'enqueue_parent_theme_style_and_js\' );
.