Как исправить проблему с отображением хлебных крошек в портфолио WordPress при использовании темы Flatsome?

WordPress (тема Flatsome) на PHP 8 — проблема с хлебными крошками и ошибкой "Attempt to read property 'ID' on null"
  • 29 апреля 2026 г. 6:01
Ответы на вопрос 4
Коротко — причина в том, что тема пытается обратиться к свойству $post->ID, когда глобальная переменная $post (или объект, возвращаемый get_queried_object()) равна null. В PHP 8 такое обращение вызывает предупреждение/фатальную ошибку "Attempt to read property 'ID' on null". Решения — обновить тему (если есть патч) или исправить проверку в коде хлебных крошек, добавив защиту от null.

Что сделать (пошагово)

1) Обновите
- Обновите Flatsome до последней версии (в большинстве случаев разработчики уже исправили совместимость с PHP 8).
- Обновите WordPress и плагины.

2) Быстрая диагностика — найти место ошибки
- В логах/сообщении об ошибке будет указано имя файла и строка. Если нет, можно поискать в теме:
  grep -R "->ID" wp-content/themes/flatsome -n
  или
  grep -R "breadcrumb" wp-content/themes/flatsome -n

3) Исправление в теме (если обновление невозможно)
- Создайте дочернюю тему и исправляйте там файлы. Если правите прямо в теме — делайте бэкап.

- Пример типичной проблемы: в коде есть обращение $post->ID без проверки. Нужно заменить это на безопасный вариант.

Пример патча (замените место использования $post->ID на вызов безопасной функции):

Добавьте в functions.php дочерней темы (или в плагин с пользовательскими правками):

function my_safe_get_post_id() {
    // сначала попробуем получить объект запроса (так бывает для архивов/таксономий)
    $queried = get_queried_object();
    if ( is_object( $queried ) && ! empty( $queried->ID ) ) {
        return (int) $queried->ID;
    }

    // затем глобальный пост
    $post = get_post();
    if ( is_object( $post ) && ! empty( $post->ID ) ) {
        return (int) $post->ID;
    }

    // как последнее средство — функция WP, возвращающая id текущего объекта запроса
    return (int) get_queried_object_id();
}

И в файле хлебных крошек (например wp-content/themes/flatsome/.../breadcrumbs.php) найдите место, где используется $post->ID и замените примерно так:

// было
// $parent_id = $post->ID;

// стало
$parent_id = my_safe_get_post_id();

Если код ожидает сам объект $post, можно вместо этого получить объект безопасно:

$post = get_post( my_safe_get_post_id() );
// и проверить
if ( $post ) {
    // работать с $post->ID, $post->post_parent и т.д.
}

Или короткая замена прямо в месте использования:

if ( isset( $post ) && is_object( $post ) ) {
    $post_id = $post->ID;
} else {
    $post_id = get_queried_object_id();
}

4) Проверка
- Включите WP_DEBUG и посмотрите, ушла ли ошибка.
- Протестируйте хлебные крошки на страницах портфолио, архивов и одиночных записей.

5) Альтернатива — временное подавление (не рекомендуется)
- Можно подавлять предупреждения, но это плохая практика. Лучше исправить код.

Если хотите, могу:
- подсказать точный файл и патч, если вы пришлёте стек ошибки (путь и строка) или полный фрагмент кода хлебных крошек из вашей темы;
- подготовить готовый фрагмент кода для замены в конкретном файле.
Я решила проблему, оказалось что главная страничка для портфолио (наши сотрудники) должна быть только без родительской страницы!
get_page_by_path() вернул null — страница из настроек Flatsome не нашлась. Зайди Customizer → Portfolio → Portfolio Page, выбери нужную страницу, пересохрани и обнови пермалинки (Settings → Permalinks → Save). <br/> <br/> Плюс добавь нулл-чек перед строкой 55: <br/> <code>if ($page_parent) {</code> <br/> и закрывающую скобку после divider.
ну не так они у вас выглядят <br/>
Похожие вопросы