Поддержка Проблемы и решения Перемещение скриптов и цсс из head в footer

  • Здравствуйте. Сервис pagespeed ругается на наличие нескольких подключенных внешних скриптов и стилей в head, и настоятельно рекомендует переместить в футер эти строки :

    <link rel="stylesheet" href="http://business-soft.com.ua/wp-content/themes/virtue/assets/css/bootstrap.css?ver=204">
    <link rel="stylesheet" href="http://business-soft.com.ua/wp-content/themes/virtue/assets/css/virtue.css?ver=204">
    <link rel="stylesheet" href="http://business-soft.com.ua/wp-content/themes/virtue/assets/css/skins/redhot.css">
    <script type='text/javascript' src='http://business-soft.com.ua/wp-includes/js/jquery/jquery.js?ver=1.10.2'></script>
    <script type='text/javascript' src='http://business-soft.com.ua/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.2.1'></script>

    Собственно — пациент

    Удалось переместить один скрипт, вывод прописан в файле scripts.php, его содержание :

    <?php
    /**
     * Enqueue scripts and stylesheets
     *
     */
    function kadence_scripts() {
      wp_enqueue_style('kadence_bootstrap', get_template_directory_uri() . '/assets/css/bootstrap.css', false, "204");
      wp_enqueue_style('kadence_theme', get_template_directory_uri() . '/assets/css/virtue.css', false, "204");
    global $virtue; if(isset($virtue['skin_stylesheet']) || !empty($virtue['skin_stylesheet'])) {$skin = $virtue['skin_stylesheet'];} else { $skin = 'default.css';}
     wp_enqueue_style('virtue_skin', get_template_directory_uri() . '/assets/css/skins/'.$skin.'', false, null);
    
      if (is_child_theme()) {
       wp_enqueue_style('roots_child', get_stylesheet_uri(), false, null);
      } 
    
      if (is_single() && comments_open() && get_option('thread_comments')) {
        wp_enqueue_script('comment-reply');
      }
    
      wp_register_script('modernizr', get_template_directory_uri() . '/assets/js/vendor/modernizr-2.6.2.min.js', false, null, true);//перемещен в футер - изменил  последнее значение false на true
      wp_register_script('kadence_plugins', get_template_directory_uri() . '/assets/js/plugins.js', false, '200', true);
      wp_register_script('kadence_main', get_template_directory_uri() . '/assets/js/main.js', false, null, true);
      wp_enqueue_script('jquery');// вывод 2 скриптов в хед
      wp_enqueue_script('modernizr');//перемещен в футер
      wp_enqueue_script('masonry');
      wp_enqueue_script('kadence_plugins');
      wp_enqueue_script('kadence_main');
    
       if(class_exists('woocommerce')) {
      wp_deregister_script('wc-add-to-cart-variation');
      wp_register_script( 'wc-add-to-cart-variation', get_template_directory_uri() . '/assets/js/add-to-cart-variation-ck.js' , array( 'jquery' ), false, '200', true );
        wp_localize_script( 'wc-add-to-cart-variation', 'wc_add_to_cart_variation_params', apply_filters( 'wc_add_to_cart_variation_params', array(
          'i18n_no_matching_variations_text' => esc_attr__( 'Sorry, no products matched your selection. Please choose a different combination.', 'woocommerce' ),
          'i18n_unavailable_text'            => esc_attr__( 'Sorry, this product is unavailable. Please choose a different combination.', 'woocommerce' ),
        ) ) );
      wp_enqueue_script( 'wc-add-to-cart-variation');
      }
    
    }
    add_action('wp_enqueue_scripts', 'kadence_scripts', 100);

    с оставшимися 3 стилями и 2 скриптами вообще ума не приложу что делать т.к. вообще ни разу не программист… Поскажите пожалуйста какие правки нужно внести в scripts.php — чтоб переместить эти объекты в футер.

Просмотр 2 ответов — с 1 по 2 (всего 2)
  • два варианта
    1) Плохой, но самый простой — подключить вручную в файле footer.php
    2) Хороший, как рекоммендует Кодекс — у функции wp_enqueue_script() последний параметр $in_footer — во всех вызовах этой функции (или только в тех, которые нужны вам) проставьте параметр в TRUE.

    Все верно, 1 из скриптов удалось переместить по кодексу, но как быть если 2 оставшихся :

    <script type=’text/javascript’ src=’http://business-soft.com.ua/wp-includes/js/jquery/jquery.js?ver=1.10.2′></script&gt;
    <script type=’text/javascript’ src=’http://business-soft.com.ua/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.2.1′></script&gt;

    выводятся этой строкой :

    wp_enqueue_script(‘jquery’);// вывод 2 скриптов в хед — проверено комментированием строки 🙂

    Дописать 4 отсутствующих параметра ? Ремарка — параметр в TRUE помог с одним скриптом, но в его случае была wp_register_script … здесь же wp_enqueue_script — это принципиально ?

    Вот вывод скриптов :

    wp_register_script(‘modernizr’, get_template_directory_uri() . ‘/assets/js/vendor/modernizr-2.6.2.min.js’, false, null, true);//перемещен в футер — изменил последнее значение false на true
    wp_register_script(‘kadence_plugins’, get_template_directory_uri() . ‘/assets/js/plugins.js’, false, ‘200’, true);
    wp_register_script(‘kadence_main’, get_template_directory_uri() . ‘/assets/js/main.js’, false, null, true);
    wp_enqueue_script(‘jquery’);// вывод 2 скриптов в хед
    wp_enqueue_script(‘modernizr’);//перемещен в футер
    wp_enqueue_script(‘masonry’);
    wp_enqueue_script(‘kadence_plugins’);
    wp_enqueue_script(‘kadence_main’);

    Спасибо за не безразличие !

Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Тема «Перемещение скриптов и цсс из head в footer» закрыта для новых ответов.