Проверить существование произвольного поля?

4 июл. 2011 г., 01:37:04
Просмотры: 18.7K
Голосов: 2

Можно ли проверить существование произвольного поля для конкретной записи внутри цикла? Например, я использую функции типа get_post_meta($post->ID, 'Company', true); с предшествующим тегом <h4>, но хотелось бы сначала проверить наличие значения для произвольного поля "Company" перед выводом тега <h4>. Возможно ли это?

1
Комментарии

Мне нравится, как вопросы, заданные 11 лет назад, могут оставаться такими актуальными.

Lisa Lisa
14 июл. 2022 г. 02:03:02
Все ответы на вопрос 1
8

Методы get_ в WordPress предназначены для получения данных, а не для их вывода. Вы можете легко проверить переменную, содержащую данные, перед добавлением тегов заголовков:

$my_post_meta = get_post_meta($post->ID, 'Company', true);
if ( ! empty ( $my_post_meta ) )
    echo '<h4>'.$my_post_meta.'</h4>';
4 июл. 2011 г. 05:07:43
Комментарии

Нет, он просто проверяет, является ли значение пустым.

T.Todua T.Todua
26 февр. 2017 г. 00:55:27

@T.Todua Автор вопроса (в 2011 году) спросил: "[…] я хочу убедиться, что для произвольного поля есть значение […]", поэтому проверка наличия значения — это нормально. Кроме того, get_post_meta() — это простая обёртка для get_metadata(), которая возвращает либо пустую строку '', либо пустой array(), если значение отсутствует. Можете, пожалуйста, уточнить ваше утверждение или вам нужна помощь?

kaiser kaiser
26 февр. 2017 г. 01:18:01

Я хотел сделать заметку для читателя, только и всего...

но заголовок вопроса сам по себе говорит (я не читал всю тему, только заголовок), что запрашивалось решение конкретной проблемы, и ответ не является 100%-ным решением той проблемы, которая была у меня (точно такой же, как в вопросе). Однако, возможно, он удовлетворил автора вопроса.

T.Todua T.Todua
26 февр. 2017 г. 19:42:22

@T.Todua Тогда вам нужно уточнить, что вы подразумеваете под "существует". Как вы можете прочитать в ответе, а также по ссылке, которую я предоставил в комментарии выше, get_metadata() достаточно для проверки наличия значения в БД.

kaiser kaiser
26 февр. 2017 г. 20:09:49

да, get_metadata — это другое. ... P.S. Я не ставил минус вашему ответу, просто это было моё замечание, которое побудило вас сделать более понятный комментарий! спасибо

T.Todua T.Todua
26 февр. 2017 г. 20:26:47

@T.Todua В ответе нет минусов :) В любом случае, get_metadata() фактически то же самое, что и get_post_meta(). Последний — это просто упрощённая "обёртка" и внутри вызывает get_metadata(). Кстати, не возражаете, если я отредактирую ваш комментарий и уберу бесконечный поток восклицательных знаков и жирное выделение?

kaiser kaiser
26 февр. 2017 г. 21:10:33

нет, удалите его, как хотите... Я не смотрел на get_metadata(). Не знаю, понимаете ли вы меня, что я имею в виду.. если ключ существует, но его значение пустое, то ваша функция переведёт это как "мета не существует"... однако, мне нужна была простая функция, которая просто скажет мне, существует ли эта мета вообще.

T.Todua T.Todua
26 февр. 2017 г. 23:08:10

Ну, если вам нужно сырое значение, тогда можно использовать $id_list = [ /* ваши ID */ ]; $wpdb->get_results( "SELECT $column, meta_key, meta_value FROM $table WHERE ".sanitize_key('post_id')." IN ($id_list) ORDER BY meta_id ASC", ARRAY_A );. В противном случае, WordPress core всегда будет возвращать либо пустой массив, либо пустую строку, в зависимости от того, запросили ли вы одиночное значение или все значения через аргумент функции.

kaiser kaiser
26 февр. 2017 г. 23:16:41
Показать остальные 3 комментариев