Intereting Posts
Проблема с get_next_post () get_previous_post (), возвращающая значение null Вывести значение настраиваемого поля для строки сообщения WordPress single.php различные проекты / сообщения компоновки Как интегрировать CLEditor в систему комментариев? Возможности пользовательского сообщения WordPress (редактировать пользовательские сообщения других пользователей) do_shortcode () в теме двадцать один WP_Query внутри существующего wp_query останавливает следующую запись, показывающую Условное сравнение строк в basename / slug Создание тегов ogp в теме Информация о таксономии возврата / времени с сообщениями (WP_Query / get_posts) Плагин возвращает случайную ошибку 404 в URL ReWrite Woocommerce вызывать API внешнего рынка? Лучшая практика создания пользовательских таблиц db Пустые «термины» в «tax_query» возвращают пустой массив однократные и архивные шаблоны не применяются к пользовательским типам сообщений, даже после устранения постоянных ссылок

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

Поэтому я создал мета-поле для оценки рейтинга. Иногда значение рейтинга (из 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 при неудачной выборке).