Как избежать ошибку WordPress Notice: Trying to get property of non-object

Часто проблемы с «Trying to get property of non-object» возникают, когда вызываемый объект or переменная содержит null или ложное значение (false). Чтобы исключить такую ошибку при получении значения get_post_meta, вам следует убедиться, что вы работаете с корректным объектом/ID записи.

В файле header.php, вам следует использовать глобальную переменную $post, которая предоставляет доступ к текущему объекту записи. В первую очередь, необходимо проверить, что объект не является пустым и имеет значение.

Вот пример кода для извлечения значения get_post_meta, с проверкой на null или false:

<?php
global $post;

if(!empty($post)) {
    $post_id = $post->ID;
    $meta_value = get_post_meta($post_id, 'your_meta_key', true);
    
    if ($meta_value !== false && $meta_value !== '') {
        // Ваш код для работы с $meta_value
        echo $meta_value;
    } else {
        // Значение метаполя не найдено или пустое
    }
} else {
    // Объект $post не найден
}
?>

Замените 'your_meta_key' на ключ вашего метаполя, с которым вы хотите работать.

Если вам все еще нужно работать с другими метаполями на страницах, где объект записи отсутствует (например, на архивных страницах или страницах результатов поиска), вы можете воспользоваться функцией get_queried_object_id(), чтобы получить ID в контексте, где объект записи отсутствует.

$queried_object_id = get_queried_object_id();

if(!empty($queried_object_id)) {
    $meta_value = get_post_meta($queried_object_id, 'your_meta_key', true);
    
    if ($meta_value !== false && $meta_value !== '') {
        // Ваш код для работы с $meta_value
        echo $meta_value;
    } else {
        // Значение метаполя не найдено или пустое
    }
} else {
    // Объект или ID не найдены
}

Применяя эти проверки, вы сможете избежать ошибки «Trying to get property of non-object» при работе с get_post_meta в файле header.php на сайте WordPress.