it-roy-ru.com

Переместить родной JavaScript Wordpress в конец страницы?

Проверяя мою страницу в Google Speed ​​Insights, он жалуется, что есть какой-то javascript, который блокирует загрузку остальной части страницы. Javascript, о котором идет речь, это родные сценарии Wordpress

... -Включаю/JS/JQuery/jquery.js? Веры = 1.11.2

... s/JQuery/JQuery-migrate.min.js? Вер = 1.2.1

Как я могу получить эти файлы в нижней части страницы и ускорить мою загрузку?

Нужно ли мне отменять регистрацию и перерегистрировать их, или каким-либо другим способом? Еще лучше, есть ли способ связать, минимизировать и переместить родные скрипты в конец?

5
Johan Dahl

Прежде всего это то, что я использую и для меня, и это работает. Я не говорю, что мой код на 100% правильный, но и Pingdom GTmetrix показывает положительный эффект и WP также удовлетворен так что это не может быть так неправильно, как и я.

Показываемые версии (? Ver = x.x.x) могут быть дебетуются, когда эти файлы должны быть кэшированы таким образом, чтобы удалить их (отфильтровать), что уже является первым шагом.

Фрагмент кода, который я использую для этого, выглядит следующим образом:

function remove_version_parameter( $src ){
    // Check if version parameter exist
    $parts = explode( '?ver', $src );
    // return without version parameter
    return $parts[0];
}
// filter .js files
add_filter( 'script_loader_src', 'remove_version_parameter', 15, 1 );
// filter .css files
add_filter( 'style_loader_src', 'remove_version_parameter', 15, 1 );

Чтобы добавить отсрочку (Google любит это видеть) * .js файлы (для положительной скорости страниц) я использую следующий фрагмент:

Редактировать - Изменен код ниже, чтобы предотвратить ошибки/странное поведение в серверной части. Источник найден здесь !

if ( ! function_exists( 'add_defer_to_js' ) && ! is_admin() ) {

    function add_defer_to_js( $url ) {

        if ( FALSE === strpos( $url, '.js' ) ) { 
            // not our file
            return $url;
        }

        // Must be a ', not "!
        return "$url' defer='defer";
    }
    add_filter( 'clean_url', 'add_defer_to_js', 11, 1 );
}

Чтобы добавить файлы .js в нижний колонтитул (помогает при загрузке страниц), мы можем поставить их в следующий фрагмент:

Редактировать - Дополнительная информация: удалить следующее из функции ниже http://yourdomain.com для нормального использования.

function enqueue_scripts_in_footer() {

    wp_deregister_script( 'jquery' );
    wp_deregister_script( 'jquery-migrate.min' );
    wp_register_script( 'jquery', 'http://yourdomain.com/wp-includes/js/jquery/jquery.js', array(), false, true );
    wp_register_script( 'jquery-migrate.min', 'http://yourdomain.com/wp-includes/js/jquery/jquery-migrate.min.js', array(), false, true );
    wp_enqueue_script( 'jquery', 'http://yourdomain/wp-includes/js/jquery/jquery.js', array( 'jquery' ), false, true );
    wp_enqueue_script( 'jquery-migrate.min', 'http://yourdomain.com/wp-includes/js/jquery/jquery-migrate.min.js', array(), false, true );
}
add_action( 'wp_enqueue_scripts', 'enqueue_scripts_in_footer' );;

Вместе эти 3 функции (добавьте functions.php) должны помочь быстрее загружать ваши страницы, правильно их кэшируя.

Надеюсь, это немного поможет. Создание копии вашего functions.php перед добавлением этих функций совсем не плохая идея (добавление функций внизу вашего functions.php - это лучший способ).

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

8
Charles