register_meta(
\'post\',
\'my_boolean_meta_value\',
array(
\'show_in_rest\' => true,
\'type\' => \'boolean\',
\'single\' => true,
\'default\' => true,
)
);
update_post_meta(166,\'my_boolean_meta_value\',false);
update_post_meta(167,\'my_boolean_meta_value\',true);
$false_value=get_post_meta(166,\'my_boolean_meta_value\',true);
$true_value=get_post_meta(167,\'my_boolean_meta_value\',true);
if (false === $false_value) {
echo "Verified false_value is false." . \'<br>\';
}
if (true === $true_value) {
echo "Verified true_value is true";
}
if (\'\' === $false_value) {
echo "Verified false_value is an empty string. " . \'<br>\';
}
if (\'1\' === $true_value) {
echo "Verified true_value is \'1\'";
}
预期输出应表明$true\\u值为
true
, $false\\u值为
false
. 相反,输出为:
Verified false_value is an empty string.
Verified true_value is \'1\'
在WordPress的未来版本中,我们可以期望布尔元数据总是返回空字符串吗
false
和字符串“1”,而不是
true
?
SO网友:Meyer Auslander
正如Tom所说,在对该问题的评论中,由于向后兼容性问题,WordPress似乎不太可能更改其存储/返回布尔post meta的标准。然而,我想到了一些编写代码的方法,即使WordPress标准确实改变了他们的标准,这些代码也能正常工作:
始终使用php将布尔Post元数据转换为其精确的布尔值boolval
function. e、 g。,boolval( get_post_meta( $id, \'my_boolean_post_meta\', true ) );
. 如果是这样的话,现在就可以与true
或false
.利用其他post元数据类型,如string
或integer
实现布尔变量。选择你自己的标准来判断什么是正确的,什么是错误的。然后将它们定义为全局常量顺便说一句,尽管WordPress存储true
“1”和false
作为“”,以下元查询仍然有效(至少在版本5.7.2之前):
用于获取真值:
array(
\'key\' => \'my_boolean_post_meta\',
\'value\' => true,
\'compare\' => \'=\',
),
获取假值:
array(
\'key\' => \'my_boolean_post_meta\',
\'value\' => false,
\'compare\' => \'=\',
),
看来
\'compare\' => \'=\'
不会导致严格的比较。