Sheensay → WordPress → Настраиваем → Last-Modified в WordPress

Last-Modified в WordPress

24.08.2018


  • Что такое Last-Modified
  • Как добавить и настроить Last-Modified в WordPress
  • Установка кеширующего плагина
  • Правим headers.php
  • Установка плагина Last-Modified

Что такое Last-Modified

Last-Modified — это часть из ответных HTTP-заголовков, посылаемых сервером в ответ на запрос браузера.
Совсем не секрет, что присутствие этого заголовка в ответе сервера положительно сказывается на работе с сайтом: отсутствие лишнего трафика (ответы сервера кешируются браузером, и если при очередном запросе ответ не изменился, то трафик не передаётся), да и просто экономия ресурсов и повышение скорости работы с сайтом.
Ещё, например, для поисковых систем невозможно понять, изменилось ли содержание страницы, если она не отдаёт Last-Modified, и потому приходится выкачивать страницу заново и сверять с предыдущей версией. Согласитесь, что это неэкономно.
Подробнее про кеширование тут, а пока вернёмся к Last-Modified в WordPress.

Как добавить и настроить Last-Modified в WordPress

Чтобы добавить Last-Modified в Вордпресс, существует несколько вариантов. Рассмотрим их ближе.

Установка кеширующего плагина

Я рекомендую попробовать настроить WP Super Cache. После прохождения по вышеуказанной инструкции, заголовки Last-Modified будут прописываться самим сервером.

При настройке NGINX обязательно отключите ssi

Учтите, заголовок Last-Modified, в данном случае, будет показывать не дату последнего изменения записи, а дату создания кешированной копии страницы, которая, в свою очередь, зависит от того, как вы настроили обновление кеша. Что, в принципе, является вполне нормальным: поисковые системы, для определения даты последнего изменения документа, смотрят, в первую очередь, в разметку, а браузеру подойдёт и дата обновления кеша.

Правим headers.php

У вас в директории с темой WordPress (/wp-content/themes/имятемы/), скорее всего, есть отдельный файл шаблона header.php.
Открываем его и в самой первой строке перед всем кодом записываем

<?php header("Last-Modified: " . get_the_modified_date('r'))?>

Учтите, этот вариант, возможно, не будет работать так, как вы ожидаете, при наличии установленного и настроенного кеширующего плагина.

Проверить отдаваемые заголовки можно с помощью плагина к Firefox Live HTTP Headers или одного из многочисленных онлайн-сервисов (например, этого).

Итак, проверяем заголовки. Если всё сработало, вы должны увидеть в ответе что-то навроде:

Last-Modified: Mon, 15 Jul 2013 14:03:55 +0000

Если файла шаблона header.php нет, то попробуйте следующий вариант.

Установка плагина Last-Modified

Как и в предыдущем пункте, этот вариант будет работать только при отсутствии кеширующего плагина на сайте, например, WP Super Cache. Однако, я настоятельно рекомендую использовать последний, так как страничный кеш никогда не помешает любому хорошему проекту.

Если не доверяете плагину, можете просто взять код ниже и записать его в functions.php или, что лучше, сделать на его основе MU plugin

<?php
/**
 * Установка HTTP заголовка Last-Modified
 * При активации плагина, у всех незапароленных постов в HTTP-заголовках появится Last-Modified
 * https://sheensay.ru/?p=247
 */

add_action( 'template_redirect', 'Sheensay_HTTP_Headers_Last_Modified' );

function Sheensay_HTTP_Headers_Last_Modified() {

	if ( ( defined( 'DOING_AJAX' ) && DOING_AJAX ) || ( defined( 'XMLRPC_REQUEST' ) && XMLRPC_REQUEST ) || ( defined( 'REST_REQUEST' ) && REST_REQUEST ) || ( is_admin() ) ) {
		return;
	}

	$last_modified = '';


	// Для страниц и записей
	if ( is_singular() ) {
		global $post;

		// Если пост запаролен - пропускаем его
		if ( post_password_required( $post ) )
			return;

		if ( !isset( $post -> post_modified_gmt ) ) {
			return;
		}

		$post_time = strtotime( $post -> post_modified_gmt );
		$modified_time = $post_time;

		// Если есть комментарий, обновляем дату
		if ( ( int ) $post -> comment_count > 0 ) {
			$comments = get_comments( array(
				'post_id' => $post -> ID,
				'number' => '1',
				'status' => 'approve',
				'orderby' => 'comment_date_gmt',
					) );
			if ( !empty( $comments ) && isset( $comments[0] ) ) {
				$comment_time = strtotime( $comments[0] -> comment_date_gmt );
				if ( $comment_time > $post_time ) {
					$modified_time = $comment_time;
				}
			}
		}

		$last_modified = str_replace( '+0000', 'GMT', gmdate( 'r', $modified_time ) );
	}


	// Cтраницы архивов: рубрики, метки, даты и тому подобное
	if ( is_archive() || is_home() ) {
		global $posts;

		if ( empty( $posts ) ) {
			return;
		}

		$post = $posts[0];

		if ( !isset( $post -> post_modified_gmt ) ) {
			return;
		}

		$post_time = strtotime( $post -> post_modified_gmt );
		$modified_time = $post_time;

		$last_modified = str_replace( '+0000', 'GMT', gmdate( 'r', $modified_time ) );
	}


	// Если заголовки уже отправлены - ничего не делаем
	if ( headers_sent() ) {
		return;
	}

	if ( !empty( $last_modified ) ) {
		header( 'Last-Modified: ' . $last_modified );

		if ( !is_user_logged_in() ) {
			if ( isset( $_SERVER['HTTP_IF_MODIFIED_SINCE'] ) && strtotime( $_SERVER['HTTP_IF_MODIFIED_SINCE'] ) >= $modified_time ) {
				$protocol = (isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.1');
				header( $protocol . ' 304 Not Modified' );
			}
		}
	}
}

Теперь должно сработать.



Так себеНеплохоНормальноХорошоОтлично (8 оценок, в среднем: 4,88 из 5)
Загрузка...

  • HTTP — заголовки. Что это такое и зачем они нужны
  • Как удалить поле URL (сайт) из формы комментариев в WordPress
  • Как удалить поле URL (сайт) из формы комментариев в Genesis Framework
  • Установка плагинов в WordPress
  • Вебмастер Яндекс — Оригинальные Тексты и WordPress

Настроить Wordpress caching headers wordpress

Last-Modified

Свежие записи

  • Squid — свой собственный HTTP Proxy сервер
  • Как исправить ошибку «Обновить WordPress — В настоящий момент выполняется другое обновление»
  • Query Monitor
  • LEMP
  • Telegram

Свежие записи

  • Squid — свой собственный HTTP Proxy сервер
  • Как исправить ошибку «Обновить WordPress — В настоящий момент выполняется другое обновление»
  • Query Monitor
  • LEMP
  • Telegram

Свежие комментарии

  • Sheens к записи Что такое SSL и TLS, как установить и настроить
  • Геомант к записи Что такое SSL и TLS, как установить и настроить
  • Sheens к записи Last-Modified в WordPress
  • Артур к записи Last-Modified в WordPress
  • Sheens к записи EWWW Image Optimizer — плагин для сжатия png, jpeg, gif анимации без потери качества
  • Telegram
  • Вконтакте
  • Facebook
  • Twitter
  • Google+
  • Одноклассники
  • Мой Мир Mail.ru
  • RSS

Copyright © 2025 · Sheensay on Genesis Framework · WordPress · Log in