1

直到最近,我一直使用以下方法来检查帖子元是否存在:

if(get_post_meta($post_id, 'example-key', true)) {
    echo get_post_meta($post_id, 'example-key', true);
}

如果密钥不存在,这当然会提供一个回退,但它也会调用相同的函数两次。改用这个有什么好处吗?

if(metadata_exists('post', '$post_id', 'example-key')) {
    echo get_post_meta($post_id, 'example-key', true);
}

似乎get_post_meta()将返回键的值,metadata_exists()并将返回一个布尔值。就 PHP 性能而言,一个比另一个更快或更高效?

我应该停止使用第一个示例,从现在开始使用第二个示例吗?

4

1 回答 1

4

通常要检查元数据是否存在,wordpress 提供了一个理想的功能。IE :

metadata_exists( string $meta_type, int $object_id, string $meta_key )

您使用的是正确的,即:

if(metadata_exists('post', '$post_id', 'example-key')) {
    echo get_post_meta($post_id, 'example-key', true);
}

它确定是否为给定对象设置了元键。

注意:“metadata_exists”函数直接返回布尔值,即 true 或 false,其中“get_post_meta”函数返回的值可能是数组 id $single 设置为“false”,或者如果 $single 设置为“true”,将返回该值. 因此,如果根据我的理解,“metadata_exists”时间复杂度小于另一个。

相同的支持文档: 是的,您可以通过 wordpress.org(官方)查看以下开发人员文档,您将获得相同的完整理解。.

1) get_post_meta   : https://developer.wordpress.org/reference/functions/get_post_meta/ 
2) metadata_exists : https://developer.wordpress.org/reference/functions/metadata_exists/

希望能帮助到你..

于 2020-02-19T14:57:35.730 回答