bobbyjack
  • 0
Эксперт

Как изменить версию основного файла CSS?

  • 0

Как я могу указать WordPress использовать имя файла, отличное от «styles.css», для моей основной таблицы стилей, например, styles-1.css? Я хотел бы сделать это для управления версиями и кэширования.

Share
  1. Style.css требуется для вашей темы WordPress. Отсюда WordPress получает название темы и метаинформацию для меню «Внешний вид» >> «Темы». Тем не менее, вам вообще не нужно использовать style.css в своей теме. Я знаю несколько легкодоступных тем, в которых он не используется, и я использую его только в нескольких своих собственных проектах.

    header.php Просто поместите следующий тег вместо обычной ссылки на таблицу стилей :

    <link rel="stylesheet" type="text/css" href="<?php bloginfo('stylesheet_directory'); ?>/style-1.css" />
    

    Это загрузит вашу альтернативную таблицу стилей в качестве таблицы стилей страницы и полностью проигнорирует обычную таблицу стилей style.css .

    • 0
  2. Это может быть неуместно, пожалуйста, дайте мне знать, если я что-то пропустил.

    Четвертый аргумент wp_enqueue_style() — это номер версии таблицы стилей. В вашей теме functions.php :

    function my_theme_styles() {
        // replace "10" with your version number; increment as you push changes
        wp_enqueue_style('my-theme-style', get_bloginfo('template_directory') . '/style.css', false, 10);
    }
    add_action('wp_print_styles', 'my_theme_styles');
    

    Требуется, чтобы ваш header.php делал a wp_head(), что, конечно же, вы все равно делали. 😉

    Это позволяет вам отправлять заголовки с длительным сроком действия с вашим файлом CSS и заставлять клиентов загружать новый файл, обновляя номер версии. WP добавит «?ver=N» к URL-адресу вашего файла CSS.

    • 0
  3. Поместите это в файл functions.php вашей темы:

    function my_cool_style_versioner( $style ){
      return str_replace( '/style.css', '/style-1.css', $style );
    }
    
    add_filter( 'stylesheet_uri', 'my_cool_style_versioner' );
    
    • 0
  4. EAMann прав, вам не нужно использовать style.css файл для всего вашего CSS.

    Для управления версиями таблицы стилей и других файлов в вашей теме вы можете добавить это в свой файл functions.php.

    function fileVersion($filename)
    {
        // get the absolute path to the file
        $pathToFile = TEMPLATEPATH.'/'.$filename;
        //check if the file exists
        if (file_exists($pathToFile)) 
        {
            // return the time the file was last modified
            echo filemtime($pathToFile);
        }
        else
        {
            // let them know the file wasn't found
            echo 'FileNotFound';
        }
    }
    

    И затем, когда вы сделаете ссылку на свою таблицу стилей, вы сможете это сделать.

    <link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo( 'stylesheet_url' ); ?>?v=<?php fileVersion('style.css'); ?>" />
    

    Таким образом, вам не нужно вручную обновлять номер версии, каждый раз, когда файл обновляется на сервере, версия автоматически изменится на эту временную метку UNIX.

    • 0
  5. Обратите внимание, что вы не должны использовать строки запросов для управления версиями файлов (прокси не кэшируют их).

    Лучшим способом было бы изменить имена файлов, например, добавив число, например

    • стиль. 123.css
    • стиль. 124.css

    Итак, мой подход следующий:

    Apache htaccess перенаправляет

    Если вы используете шаблон HTML5 с Apache, вы можете найти следующий раздел в файле.htaccess :

    # ------------------------------------------------------------------------------
    # | Filename-based cache busting                                               |
    # ------------------------------------------------------------------------------
    
    # If you're not using a build process to manage your filename version revving,
    # you might want to consider enabling the following directives to route all
    # requests such as `/css/style.12345.css` to `/css/style.css`.
    
    # To understand why this is important and a better idea than `*.css?v231`, read:
    # http://stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring
    
    <IfModule mod_rewrite.c>
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.+)\.(\d+)\.(js|css|png|jpe?g|gif)$ $1.$3 [L]
    </IfModule>
    

    (Обычно вам нужно сначала включить его, раскомментировав строки)

    Тема functions.php

    Я хотел автоматически использовать версию моей темы для таблицы стилей, поэтому придумал следующее:

    Вы можете добавить в свои темы functions.php следующее :

    function my_theme_styles() {
        $my_theme = wp_get_theme();
        $version = str_replace('.','',$my_theme->get( 'Version' ));
        $stylesheet = get_bloginfo('stylesheet_directory').'/style.'.$version.'.css';
        wp_enqueue_style('my-main', $stylesheet, false, null);
    }
    add_action('wp_print_styles', 'my_theme_styles');
    

    Обратите внимание, что я указал null версию вместо false, поэтому WordPress не добавляет свою версию в строку запроса.

    Результат

    Это выводит таблицу стилей, подобную следующей для версии 1.0.2 вашей темы:

    <link rel='stylesheet' id='maw-main-css'  href='http://www.example.com/wp-content/themes/my-theme/style.102.css' type='text/css' media='all' />
    

    После того, как я изменю свою тему на версию 2.0.0 в моем style.css, она выведет следующее:

    <link rel='stylesheet' id='maw-main-css'  href='http://www.example.com/wp-content/themes/my-theme/style.200.css' type='text/css' media='all' />
    

    Дополнительные примечания

    Будьте осторожны, если вы просто удалите точки из версии, как это сделал я, у вас могут возникнуть проблемы с версиями темы, такими как 1.2.23 и 1.22.3, так как они обе приводят к версии 1223 без точек.

    Лучше всего было бы учесть это в файле.htaccess. Например, вы можете разрешить символы подчеркивания между числами и заменить ими точки.

    Это не проверено, но должно работать:

    .htaccess

    # ------------------------------------------------------------------------------
    # | Filename-based cache busting                                               |
    # ------------------------------------------------------------------------------
    <IfModule mod_rewrite.c>
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.+)\.([_\d]+)\.(js|css|png|jpe?g|gif)$ $1.$3 [L]
    </IfModule>
    

    functions.php

    function my_theme_styles() {
        $my_theme = wp_get_theme();
        $version = str_replace('.','_',$my_theme->get( 'Version' ));
        $stylesheet = get_bloginfo('stylesheet_directory').'/style.'.$version.'.css';
        wp_enqueue_style('my-main', $stylesheet, false, null);
    }
    add_action('wp_print_styles', 'my_theme_styles');
    
    • 0
  6. Ну, вы могли бы просто использовать style.css как место, где вы называете нужную версию. Проще говоря

    @import url("style-1.css");
    

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

    @import url("style-2.css");
    

    Что касается сохранения версий, вы рассматривали возможность использования Subversion или git ? Затем вы можете получить полный послужной список вашей таблицы стилей. Возможно, я не совсем понимаю все причины вашей версии.

    • 0
  7. Я наткнулся на этот старый вопрос и обнаружил, что все ответы в настоящее время кажутся устаревшими.

    Я бы просто использовал версию темы, как указано в заголовке файла style.css. Вы можете получить это сwp_get_theme()->get( 'Version' )

    function my_enqueue_styles() {
        wp_enqueue_style( 'my-theme-style', get_template_directory_uri() . '/style.css', false, wp_get_theme()->get( 'Version' ) );
    }
    add_action( 'wp_enqueue_scripts', 'my_enqueue_styles' );
    

    Таким образом, номер версии будет автоматически добавлен к URL-адресу, ?ver=#.## и URL-адрес изменится, как только будет увеличена версия темы в style.css.

    • 0
  8. В functions.php изменении

    wp_enqueue_style( 'twentysixteen-style', get_stylesheet_uri();
    

    к

    wp_enqueue_style( 'twentysixteen-style', get_stylesheet_uri(), array(), $ver );
    

    изменить $ver на любое значение или time() для режима разработки.

    • 0
  9. Я не уверен, изменилось ли это для WP3, поэтому я не совсем уверен, но один из способов — напрямую отредактировать соответствующий php-файл (я не знаю, можно ли это сделать на страницах панели инструментов/администрирования) :

    wp-folder/wp-content/themes/your-theme/
    

    И открывай header.php . В этом файле найдите эту строку:

    <link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />
    

    Чтобы добавить «версию» в связанную таблицу стилей (при условии, что вы хотите, чтобы она была примерно такой: stylesheetURL.css?version=2 ), измените ее на:

    <link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>?version=2" type="text/css" media="screen" />
    

    Однако это довольно неэлегантно, поэтому, если есть лучший способ, я бы хотел услышать это сам =)


    Я только что перечитал ваш вопрос…

    Чтобы использовать другую таблицу стилей styles-1.css, вы можете либо просто (выше) строку:

    <link rel="stylesheet" href="absolute/or/root-relative/path/to/styles-1.css" type="text/css" media="screen" />
    

    (В основном удаляя <?php... ?> и заменяя его обычным путем.)

    • 0

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

You must login to add an answer.