Twig + wordpress - как получить filemtime для style.css - PullRequest
0 голосов
/ 10 апреля 2019

Я использую веточку + древесину в своей теме WordPress.У меня есть файл style.css, включенный таким образом

<link rel="stylesheet" href="{{ site.theme.uri }}/dist/css/style.min.css" />

Я хочу добавить ?ver=xxxx для предотвращения кэширования файлов.Мой вопрос, как реализовать функцию filemtime?Я хочу сделать это так

<link rel="stylesheet" href="{{ site.theme.uri }}/dist/css/style.min.css?ver=1202120210" />

1 Ответ

2 голосов
/ 10 апреля 2019

Есть несколько способов справиться с этим, и оба включают в себя написание PHP.

Первый и рекомендованный способ - использовать wp_enqueue_style() вместо добавления тега <link> в файл ветки.

/**
 * Places the following tag into the page <head>, where
 *  `{ theme_url }` = the url of your theme directory
 *  `{ filemtime }` = the timestamp of the last modified date
 *                    for the stylesheet
 * <link rel="stylesheet" href="{ theme_url }/dist/css/style.min.css?ver={ filemtime }" />
 */
function my_custom_css_styles() {
    wp_enqueue_style(
        'main-styles',
        get_template_directory_uri() . '/dist/css/style.min.css',
        array(),
        filemtime(get_template_directory() . '/dist/css/style.min.css'),
        false );
}
add_action( 'wp_enqueue_scripts', 'my_custom_css_styles' );

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

Если по какой-то причине у вас это не работает, второй метод - сгенерировать номер версии с помощью PHP, а затем добавить его в качестве новой переменной в контекст Timber. Ваша строка в Twig будет выглядеть так:

<link rel="stylesheet" href="{{ site.theme.uri }}/dist/css/style.min.css?ver={{ style_css_version }}" />

Затем в файле шаблона вы добавите новую переменную style_css_version после определения контекста:

$context = Timber::get_context();
$context['style_css_version'] = filemtime(get_template_directory() . '/dist/css/style.min.css');

Если вы хотите использовать это на каждой странице вашего сайта, а не только на страницах с определенным шаблоном, вы можете добавить его в глобальный контекст Timber из вашего functions.php (дополнительная информация на Timber - расширить данные до контекст (WordPress) ):

function my_custom_timber_context( $context ) {
    $context['style_css_version'] = filemtime(get_template_directory() . '/dist/css/style.min.css');
}

add_filter( 'timber_context', 'my_custom_timber_context'  );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...