Какой самый эффективный и простой способ сохранить значение post_meta в переменной вместе со значением по умолчанию, если meta_key не существует?
Я хочу использовать что-то вроде этого, meta_value всегда будет числом:
$bv_faq_thumbs_up = isset(get_post_meta($post->ID, '_bv_faq_thumbs_up', true)) ? get_post_meta($post->ID, '_bv_faq_thumbs_up', true) : 0;
Но это выдает ошибку PHP:
Неустранимая ошибка: невозможно использовать isset () для результата выражения
Вне головы, единственное, что я могу придумать, что-то вроде:
if(get_post_meta($post->ID, '_bv_faq_thumbs_up', true) === null) {
$bv_faq_thumbs_up = 0;
} else {
$bv_faq_thumbs_up = get_post_meta($post->ID, '_bv_faq_thumbs_up', true);
}
Но это кажется довольно многословным и раздутым, это правильный путь (с точки зрения скорости и эффективности и аккуратности)
Попробуйте этот код;
$bv_faq_thumbs_up = get_post_meta($post->ID, '_bv_faq_thumbs_up', true);
if(empty($bv_faq_thumbs_up)) {
$bv_faq_thumbs_up = 0;
}
ИЛИ ЖЕ
$bv_faq_thumbs_up = get_post_meta($post->ID, '_bv_faq_thumbs_up', true);
$bv_faq_thumbs_up = (!empty($bv_faq_thumbs_up)) ? $bv_faq_thumbs_up : 0;
ИЛИ ЖЕ
if(metadata_exists( 'post', $post->ID, '_bv_faq_thumbs_up' ) === null) {
$bv_faq_thumbs_up = 0;
} else {
$bv_faq_thumbs_up = get_post_meta($post->ID, '_bv_faq_thumbs_up', true);
}
для будущих пользователей
Основываясь на комментарии Стендера, я обнаружил, что metadata_exists
вместо isset
позволяет работать той же идее, по-прежнему содержится в одном предложении и только с использованием get_post_meta()
функционировать один раз, одновременно устанавливая значение по умолчанию.
$bv_faq_thumbs_up = metadata_exists('post', $post->ID, '_bv_faq_thumbs_up') ? get_post_meta($post->ID, '_bv_faq_thumbs_up', true) : 0;