Предотвращение ошибки 404 на пустых архивах по дате

2 июл. 2013 г., 14:36:56
Просмотры: 2.71K
Голосов: 4

На странице архива по дате, когда записи отсутствуют (для этой даты), WordPress перенаправляет на страницу 404.

Есть ли способ заставить WordPress продолжать использовать исходный архив вместо страницы 404? Таким образом, я смогу использовать условие if ( have_posts() ) для вывода сообщения "Записи не найдены".

0
Все ответы на вопрос 2
0

Вы можете переместить код из ответа OP в фильтр шаблона 404 и заставить WordPress загружать файл date.php вместо 404.php. Он по-прежнему будет отправлять заголовок 404, но отображать страницу с другим шаблоном.

function wpd_date_404_template( $template = '' ){
    global $wp_query;
    if( isset($wp_query->query['year'])
        || isset($wp_query->query['monthnum'])
        || isset($wp_query->query['day']) ){
            $template = locate_template( 'date.php', false );
    }
    return $template;
}
add_filter( '404_template', 'wpd_date_404_template' );
23 апр. 2014 г. 09:08:29
0

Хорошо, подумав, я не уверен, не слишком ли многого я требую от WordPress. С точки зрения SEO, я определенно хочу, чтобы пустые страницы возвращали 404 ошибку, я точно не хочу, чтобы они индексировались.

Я решил вместо этого использовать шаблон 404 для вывода сообщения "Записи не найдены", но поскольку функции is_date(), is_day() и подобные не работают на странице 404, я добавил этот код для определения, была ли 404 ошибка связана с архивом по дате.

Вставьте следующий код в ваш 404.php для определения URL:

global $wp_query;

$is_date_archive = ( isset($wp_query->query['year']) || isset($wp_query->query['monthnum']) || isset($wp_query->query['day']) );

Затем я могу использовать переменную $is_date_archive для изменения шаблона 404 соответствующим образом.

Пример (404.php)

global $wp_query;

$is_date_archive = ( isset($wp_query->query['year']) || isset($wp_query->query['monthnum']) || isset($wp_query->query['day']) );

if( $is_date_archive ){ echo 'Записи не найдены'; } else { echo 'Общая страница 404'; }
2 июл. 2013 г. 15:24:12