Часто проблемы с «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.