Установка последнего измененного заголовка HTTP на статической домашней странице

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

Итак, как мы можем установить последний измененный HTTP-заголовок на странице, которую он установил для самой последней Post?

Solutions Collecting From Web of "Установка последнего измененного заголовка HTTP на статической домашней странице"

Последний-модифицированный заголовок для посетителей на первой странице

Полезно посмотреть, как заголовок Last-Modified добавлен в каналы, в wp::send_header() .

Если мы хотим использовать is_front_page() , то фильтры wp_headers или send_header , вероятно, применяются к ранним.

Вместо этого мы могли бы использовать hook_redirect для таргетинга на переднюю страницу, до отправки заголовков и после is_front_page() .

Вот пример:

 /** * Set the Last-Modified header for visitors on the front-page * based on when a post was last modified. */ add_action( 'template_redirect', function() use ( &$wp ) { // Only visitors (not logged in) if( is_user_logged_in() ) return; // Target front-page if( ! is_front_page() ) return; // Don't add it if there's eg 404 error (similar as the error check for feeds) if( ! empty( $wp->query_vars['error'] ) ) return; // Don't override the last-modified header if it's already set $headers = headers_list(); if( ! empty( $headers['last-modified'] ) ) return; // Get last modified post $last_modified = mysql2date( 'D, d MYH:i:s', get_lastpostmodified( 'GMT' ), false ); // Add last modified header if( $last_modified && ! headers_sent() ) header( "Last-Modified: " . $last_modified . ' GMT' ); }, 1 ); 

Здесь мы использовали основные функции PHP header() , headers_list() и headers_sent() и основную функцию WordPress get_lastpostmodified()

Заголовок Etag можно было бы добавить здесь также как md5 последней измененной даты.

Затем мы можем проверить его из командной строки, например:

 # curl --head https://example.tld 

или просто используйте сокращенный параметр -I только для получения заголовков HTTP.

Непроверенный, но он должен работать:

 $query = "SELECT MAX(post_modified) AS modified FROM {$wpdb->prefix}posts"; $results = $wpdb->get_results($query); if (isset($results[0]->modified) { header("Last-Modified: ".$results[0]->modified); }