Разобрался и настроил.
1) Поменял версию PHP с
5.4
на
5.6
2) Изменил filter
wp_headers
на action
template_redirect
. Поскольку на момент срабатывания wp_headers - переменные типа
$post еще не инициализированы, а значит, все проверки типа поста, получение его ID и т.д. - невозможны
function lastmode_headers() {
if(is_singular()) {
global $post;
$LastModified = get_the_modified_time("D, d M Y H:i:s", $post->id);
$IfModifiedSince = false;
if (isset($_ENV['HTTP_IF_MODIFIED_SINCE']))
$IfModifiedSince = strtotime(substr($_ENV['HTTP_IF_MODIFIED_SINCE'], 5));
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']))
$IfModifiedSince = strtotime(substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 5));
if ($IfModifiedSince && $IfModifiedSince >= $LastModified_unix) {
header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
exit;
}
header('Last-Modified: '. $LastModified);
}
}
add_action('template_redirect', 'lastmode_headers');