javascript wordpress - wp_dequeue_script для дочерней темы для замены скрипта




3 Answers

Несколько вопросов здесь для начала

  • Вы должны использовать get_stylesheet_directory_uri() для дочерних тем и get_template_directory_uri() для родительских тем вместо функций get_bloginfo() . Последнее медленнее и использует первые две функции

  • Сценарии и стили должны быть сняты с учета AND и удалены, чтобы полностью удалить их из очереди

  • Приоритет важен. Вам нужно подключить функцию позже, чтобы убедиться, что стили и скрипты зарегистрированы до того, как вы их отмените, иначе это не сработает.

Решение:

Скопируйте родительский файл js в дочернюю тему и откройте его и внесите необходимые изменения. Сохранить файл

Теперь вам нужно удалить dequeue и отменить регистрацию родительского js-файла, а затем поставить в очередь новый файл js-темы для детей

пример

/*
 * Use any number above 10 for priority as the default is 10 
 * any number after 10 will load after
 */
add_action( 'wp_enqueue_scripts', 'my_custom_scripts', 100 );
function my_custom_scripts()
{
    wp_dequeue_script( 'parent-script-handle' );
    wp_deregister_script( 'parent-script-handle' );
    // Now the parent script is completely removed

    /*
     * Now enqueue you child js file, no need to register if you are not 
     * doing conditional loading
     */
    wp_enqueue_script( 'child-script-handle', get_stylesheet_directory_uri() . '/child-script.js' );
    //Now we have done it correctly
}
js add_action

У меня есть дочерняя тема, и я могу добавить сценарий, который я хочу использовать, чтобы заменить некоторые функции темы и заменить некоторые из кнопок.

Но я не могу удалить старую кнопку, чтобы они отображались друг на друга. Как удалить исходный js-скрипт?

вот моя function.php для детской темы

function replace_scroll(){
    // Remove the Default JavaScript    
    wp_dequeue_script( 'dp-js' );

    // Add your own script  
    $js_url = get_bloginfo('stylesheet_directory') . '/js';
    wp_enqueue_script('dp',"$js_url/dp1.scripts.js"); 
} 
add_action( 'wp_enqueue_scripts', 'replace_scroll' ); 



Вам нужно выяснить, где родительская тема генерирует кнопки.

Если они генерируются javascript, вы можете удалить сценарий, создающий кнопки. Просто будьте осторожны, так как любой другой javascript в этом файле также будет удален. Если это проблема, лучший способ сделать это - скопировать скрипт js в папку темы, удалить часть, которую вы не хотите, удалить из оригинала и поставить в очередь ваш измененный скрипт.

Как это сделать.

Чтобы удалить сценарий, вам нужно знать его дескриптор. Вот фантастический учебник о том, как получить дескрипторы скриптов, очень удобно. Подводя итог, если ссылка не работает:

Добавлен в файл functions.php

function wpcustom_inspect_scripts_and_styles() {
    global $wp_scripts;
    global $wp_styles;

    // Runs through the queue scripts
    foreach( $wp_scripts->queue as $handle ) :
        $scripts_list .= $handle . ' | ';
    endforeach;

    // Runs through the queue styles
    foreach( $wp_styles->queue as $handle ) :
        $styles_list .= $handle . ' | ';
    endforeach;

    printf('Scripts: %1$s  Styles: %2$s', 
    $scripts_list, 
    $styles_list);
}

add_action( 'wp_print_scripts', 'wpcustom_inspect_scripts_and_styles' );

Это напечатает список всех js и css, которые будут загружены на вашу страницу вверху. Если у вас возникли проблемы с разработкой чего-то, вы всегда можете использовать инспектора дома, например, в Chrome или firefox. На chrome - щелкните правой кнопкой мыши - проверьте элемент - Resources-Frames - URL-адрес вашего сайта - скрипты.

Это даст вам список всех скриптов и их местоположений.

После того, как вы выяснили, какой сценарий вам нужен, скопируйте его в свою тему и удалите часть, добавляющую кнопки.

Затем удалите ненужный скрипт с помощью дескриптора, который мы обнаружили ранее, и запустите новый файл.

function wpcustom_deregister_scripts_and_styles(){

    wp_deregister_script('my-script-handle');
    wp_enqueue_script( 'my-new-script', get_template_directory_uri() . '/js/my-new-script.js', array(), '1.0', true );
}

add_action( 'wp_print_styles', 'wpcustom_deregister_scripts_and_styles', 100 );

Если кнопки генерируются php, вам нужно найти файл, который генерирует html в родительской теме, скопировать его в вашу дочернюю тему и удалить строки нарушения.




Я хочу добавить, что нам нужно использовать get_stylesheet_directory_uri() при добавлении скрипта замены, потому что get_template_directory_uri() возвращает родительский каталог темы.

См. Документы WordPress здесь




Related

javascript php wordpress parent-child