mathiregister
  • 0
Новичок

Wp_head() удалить лишние скрипты?

  • 0

быстрый вопрос. Я использую jquery для своего текущего проекта (последняя версия). Несколько плагинов, которые я использую, также используют jquery, и они вставляются через wp_head(). Поскольку я хочу, чтобы мой веб-сайт был достаточно компактным и быстрым, эти избыточные скрипты следует удалить.

Есть ли способ отфильтровать строку «jquery.js» в wp_head() и удалить тег, который встраивает скрипт? Как вы можете видеть на следующем снимке экрана, jquery.js не понадобится. Можно ли удалить это с помощью крючка?

введите описание изображения здесь

Share
  1. Вы зависите от авторов плагинов, правильно зарегистрировавших скрипты. Многие плагины просто закидывают свои скрипты в голову, не используя wp_register_script и соответствующие API. Можете ли вы найти, какие плагины добавляют какой скрипт и как они это делают?

    • 0
  2. Нет фильтра, который покрывает весь вывод, созданный во время wp_head(). Вам придется использовать довольно сложный процесс буферизации вывода, начиная с wp_head, а затем отфильтровывая то, что вам не нужно, перед освобождением буфера.

    Давайте предположим, что вы имеете дело с плагинами, которые правильно зарегистрировали свои скрипты. Попробуйте добавить это в свой functions.php, а затем просмотреть исходный код одной из ваших страниц:

    add_action('wp_head', 'debug_scripts_queued');
    
    function debug_scripts_queued() {
        global $wp_scripts;
        echo '<!--- SCRIPTS QUEUED'."\r\n";
        foreach ( $wp_scripts->queue as $script ) {
            echo "\r\nSCRIPT: ".$script."\r\n";
            $deps = $wp_scripts->registered[$script]->deps;
            if ($deps) {
                echo "DEPENDENCIES: ";
                print_r($deps);
            }
        }
        echo "\r\n--->";
    }
    

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

    Если то, что вы хотите отменить, находится в этом списке и не вызывается как зависимость от другого скрипта, проще всего просто вызвать wp_deregister_script его с указанным здесь дескриптором.

    Однако, скорее всего, вы имеете дело со случаем, когда плагин не следует передовым методам добавления скрипта. Из вашего вывода видно, что какой-то плагин добавил jQuery 1.5 без предварительной отмены регистрации jquery и перерегистрации его с другой версией. поэтому все, что зависит от jquery, требует включения версии, поставляемой в комплекте с WP.

    • 0
  3. Вы можете использовать wp_deregister_style() и wp_deregister_script() для очистки чрезмерно агрессивных инъекций скриптов/стилей плагинов. Например, вот как я «оптимизирую» внедрение стиля/скрипта Contact Form 7:

    // Optimize Contact Form 7
    function deregister_cf7_js() {
       if ( ! is_page( 'contact' ) ) {
        wp_deregister_script( 'contact-form-7' );
         }
    }
    add_action( 'wp_print_scripts', 'deregister_cf7_js', 100 );
    
    function deregister_ct7_styles() {
       if ( ! is_page( 'contact' ) ) {
            wp_deregister_style( 'contact-form-7' );
        }
    }
    add_action( 'wp_print_styles', 'deregister_ct7_styles', 100 );
    

    Если вы знаете, какие плагины являются виновниками, вы можете использовать аналогичный подход.

    • 0
  4. Да, вы можете отключить появление определенных плагинов или скриптов.

    Вот пример того, как я отключил плагин easy fancybox от появления

    Надеюсь, поможет 🙂

    • 0

Оставить ответ

You must login to add an answer.