Файл 404 темы WordPress вызывается при каждой загрузке страницы?

Вопрос или проблема

Казалось бы, по какой-то причине, на теме, которую я редактирую, шаблон 404.php выполняется при каждой загрузке страницы, хотя то, что на самом деле отображалось, было совершенно нормальным, будь то индекс, отдельный пост или страница и т. д.

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

Единственным решением было “выйти” из файла 404.php сразу же, чтобы весь код, который он содержит, не выполнялся без надобности (или удалить его совсем).

Но теперь на моем сайте нет страницы 404.

Как я могу понять, почему это происходит? Например, стек событий, показывающий, что вызывает выполнение страницы 404 темы?


Правка: Окей, после множества раздумий я определил, что это вызывается кодом, похожим на этот:

$post_img_title_html="<span class="img-container"><img src="http://example.com/images/animationspotlight/" . $thumb_name . '" alt="' . $post_title . '" /></span>';

По сути, это приведет к <span><img src="http://example.com/image.png" alt="Title" /></span>

НО… в моей тестовой среде это изображение не существует. Так что это просто типичное отображение “сломанное изображение”. Ничего страшного?

ПОЧЕМУ… это вызывает вызов WordPress для полного “рендеринга” файла 404.php темы? Опять же, это происходит “в закулисье”, так как я не вижу никаких признаков 404 на странице, которую я просматриваю. Но я не хочу, чтобы мой сайт выполнял все это дополнительное рендеринг/обработку всей страницы 404 и ее виджетов и т. д., ни за что?…

Есть ли какой-то “приоритет 404” или “чувствительность” настраиваемых параметров. Я имею в виду, я даже не знаю, как это выразить словами, это так просто.

Это связано с htaccess. Если я удалю файл, 404 ошибки не возникают. Но, конечно, ссылки нарушены. Я переписываю ссылки, страницы снова работают, но каждое “не найденное” изображение приводит к загрузке 404.php темы. Должен быть способ обойти это?

Я не совсем понимаю проблему, так как у меня недостаточно информации, или какие-либо устранения неполадок, которые вы провели, за исключением того, что происходит с точки зрения пользователя, но я постараюсь помочь вам максимально эффективно.

В любой ситуации, когда возникают проблемы с 404, всегда попытайтесь:
(1) Сбросить постоянные ссылки через панель управления WP.
(2) Попробовать сбросить ваш файл .htaccess.

Быстрый поиск в Google для выполнения каждого из этих шагов по устранению неполадок должен дать руководство о том, как это сделать.

Если ни один из этих двух шагов по устранению неполадок не решает проблему, с которой вы сталкиваетесь, рекомендую углубиться дальше. Для дальнейшего устранения этой проблемы нам потребуется больше информации, поэтому давайте попробуем следующее:

Шаг 1.

Включите wp_debug (https://wordpress.org/support/article/debugging-in-wordpress/), чтобы мы могли увидеть, есть ли какие-то явные проблемы с PHP на просмотренных страницах.

Я также постараюсь узнать, какой шаблон обслуживает текущую страницу, которую вы смотрите, когда видите проблему с включенными всеми виджетами и плагинами, как они есть, когда вы замечаете проблему. Для этого потребуется добавить код с вашей стороны. Знаменитое резюме о том, как этого добиться, в следующей ссылке:

Как узнать, какой шаблон страницы обслуживает текущую страницу?

Шаг 2.

Затем я бы отключил все виджеты и плагины; вернитесь к проблемным страницам, которые вы определили на шаге 1 (выше), и посмотрите, сохраняется ли проблема. Если да, определите, какие шаблоны обслуживают эти страницы. (Обратите внимание, есть ли разница в шаблонах, обслуживающих проблемные страницы теперь, когда виджеты и плагины отключены).

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

Это не полное решение, но, по крайней мере, путь для начала. Добавьте больше информации о том, что вы обнаружили, следуя приведенным выше шагам, и я буду рад помочь дальше. Удачи, и надеюсь, это поможет!

Ответ или решение

Проблема, с которой вы столкнулись, когда файл 404.php вызывается на каждой загрузке страницы в WordPress, требует детального анализа и диагностических процессов, чтобы понять корневую причину. Основная задача заключается в предотвращении избыточного рендеринга, который происходит несмотря на нормальный вид страницы. Давайте рассмотрим подходы к решению этой проблемы, используя копирайтинговую формулу TEA (Теория, Пример, Применение).

Теория

В WordPress функция обработки ошибок типа "404 – Страница не найдена" обычно вызывается тогда, когда запрашиваемый ресурс недоступен или URL неправильно обработан. В вашей ситуации это ведет к избыточному использованию ресурсов, так как каждый раз загружается шаблон 404.php, что может замедлять работу сайта и создавать излишнюю нагрузку на сервер.

Пример

На основе приведенного вами кода:

$post_img_title_html="<span class=\"img-container\"><img src=\"http://example.com/images/animationspotlight/" . $thumb_name . '" alt="' . $post_title . '" /></span>';

мы видим, что вставка изображения ведет к попытке загрузки ресурса, который не существует на сервере. Это ведет к генерации ошибки 404. Вмешательством в файл .htaccess может объясняться почему при отсутствии изображений ваш сервер переходит к обработке ошибки 404 и инициирует выполнение шаблона 404.php. Это может быть связано с неправильными настройками переадресации, которые включают 404-страницу в сценарий обработки ошибок.

Применение

Мы предлагаем следующие шаги для диагностики и решения проблемы:

  1. Включение режима отладки в WordPress:

    • Для начала активируйте отладку, добавив следующие строки в ваш файл wp-config.php:
      define('WP_DEBUG', true);
      define('WP_DEBUG_LOG', true);

      Это позволит фиксировать все ошибки PHP в файл debug.log, который можно найти в папке /wp-content/.

  2. Проверка взаимодействия шаблонов:

    • Используйте код для определения, какой шаблон обрабатывает текущую страницу. Этот подход поможет вам точно определить, где начинается вызов 404.php. Один из способов сделать это — добавить следующее в ваш functions.php:
      add_action('wp_footer', 'show_template');
      function show_template() {
       global $template;
       echo $template;
      }
  3. Изоляция проблемы:

    • Отключите все плагины и виджеты, почистите кэш и проверьте повторное появление проблемы. Это позволит подтвердить, что проблема не связана с сторонними модулями.
  4. Проверка файла .htaccess:

    • Обратите внимание на содержимое вашего файла .htaccess. Стандартный файл для WordPress обычно выглядит так:
      # BEGIN WordPress
      <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteBase /
      RewriteRule ^index\.php$ - [L]
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule . /index.php [L]
      </IfModule>
      # END WordPress

      Убедитесь, что никакие дополнительные правила не вызывают избыточный вызов 404.

  5. Внимание к URL изображений:

    • Имеет смысл проверить генерируемый URL изображений на наличие ошибок или неточностей. Если изображения физически не существуют, рассмотрите возможность настройки заглушки или возврата альтернативных изображений.
  6. Оптимизация вызова 404.php:

    • Если выявить физически несуществующие ресурсы невозможно или затруднительно, включите в шаблон 404.php проверку условий вызова, чтобы минимизировать его выполнение в случае отсутствия рендеринга страницы.

Следуя этим шагам, вы сможете значительно сократить необоснованный вызов вашего шаблона 404.php и устранить проблему. Как только вы соберете больше данных об ошибках, имея активированную отладку и сведения о шаблонах, это поможет вам осуществить дальнейшие шаги. Если потребуется дополнительная помощь в более узких вопросах, мы готовы поддержать вас в решении проблемы.

Оцените материал
Добавить комментарий

Капча загружается...