1

如果 meta_key 不存在,将 post_meta 值以及默认值存储在变量中的最有效和最简单的方法是什么?

我想使用这样的东西,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);
}

但这似乎很冗长和臃肿,这是正确的方式吗(在速度和效率方面,以及整洁方面)

4

2 回答 2

1

试试这个代码;

$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);
}

对于未来的用户

于 2018-02-16T09:57:15.390 回答
1

根据 Stender 的评论,我发现使用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;
于 2018-02-16T10:13:10.670 回答