Какой лучший способ проверить, существует ли мета-значение записи? - PullRequest
0 голосов
/ 19 февраля 2020

До недавнего времени я всегда использовал следующий метод для проверки существования мета-сообщения:

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 один быстрее или эффективнее другого?

Должен ли я прекратить использовать первый пример и теперь использовать второй?

1 Ответ

0 голосов
/ 19 февраля 2020

Как правило, чтобы проверить, существуют ли метаданные или нет идеальной функции, предоставляемой WordPress. т.е.:

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» возвращает непосредственно bool, то есть 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/

Надеюсь, это поможет ..

...