Intereting Posts
Есть ли способ скрыть страницу из панели управления (список всех страниц) или navbar из функции плагина? виджеты в нижнем колонтитуле? Постоянная ссылка на пользовательскую таксономию перестала работать get_posts из post x (offset => x) до конца Настроить загрузку медиафайлов WordPress и меню нового медиа-менеджера в добавить сообщение Metabox Предотвратите WordPress от аббревиатуры-long-slugs … -in-the-admin Использование лицензированного MIT лицензированного niftyPlayer в WordPress Hosted Plugin (Premium и бесплатные версии) Создайте single.php для определенной категории по категории id использование тега <svg> в wordpress custom_list_table редактировать / удалять массовые действия Получить порядок сортировки категорий товаров Заказ пользовательского меню администратора Какова таблица базы данных для страниц? Предупреждение: Отсутствует аргумент 2 для фильтра widget_title WordPress взломан? Сообщения не найдены в панели управления

Сохранение нуля в мета-окне

Поэтому я создал мета-поле для оценки рейтинга. Иногда значение рейтинга (из 5) равно нулю.

Когда вы вводите 0 во вход и сохраняете данные, он не обрабатывается из-за того факта, что 0 также означает false в инструкции:

if ($meta_value) ... 

Мне было интересно, знает ли кто-нибудь способ сохранить нулевое значение?

Единственный ответ, который я нашел, – это ввести 0x0, а затем преобразовать его (согласно: https://wordpress.stackexchange.com/a/96536/17411 ), но для пользователей это кажется запутанной задачей для объяснения, а затем для их помнить ..


Это моя save_meta:

 function save_custom_meta($post_id) { global $meta_review_fields_1; // Verify nonce if (!wp_verify_nonce($_POST['custom_meta_box_nonce'], basename(__FILE__))) return $post_id; // Check autosave if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return $post_id; // Check permissions if ('page' == $_POST['post_type']) { if (!current_user_can('edit_page', $post_id)) return $post_id; } elseif (!current_user_can('edit_post', $post_id)) { return $post_id; } // Loop and save: Review foreach ($meta_review_fields_1 as $field_1) { $old_1 = get_post_meta($post_id, $field_1['id'], true); $new_1 = $_POST[$field_1['id']]; if ($new_1 && $new_1 != $old_1) { update_post_meta($post_id, $field_1['id'], $new_1); } elseif ('' == $new_1 && $old_1) { delete_post_meta($post_id, $field_1['id'], $old_1); } } 

Имейте в виду, мне нужно, чтобы он удалял содержимое других полей, если он пуст, просто введите рейтинг, который должен иметь значение 0.

Solutions Collecting From Web of "Сохранение нуля в мета-окне"

Ваша проблема, похоже, связана со слишком свободной логической проверкой, а не с сохранением.

Чтобы правильно лечить корректное, но фальшивое значение, вам нужно что-то вроде этого:

 if ( false !== $meta_value ) 

Это будет строго соответствовать только случаю, когда значение не содержит false (возврат API при неудачной выборке).