Поддержка → Проблемы и решения → Как не сохранять пустые данные из Metabox новой записи
Как не сохранять пустые данные из Metabox новой записи
-
Всем привет!
Брал из кодекса стандартный код, который добавляет метабокс дополнительные данные для записи, проблема в том, что если данные в них не заполнять, после создания новой записи, в базу данных все равно добавляется ключ метабокса с пустым значением.
Например, есть 2 поля: meta1 и meta2, если в meta1 есть значение — сохранить в базу, а если в meta2 нет значения, то его не нужно сохранять, даже не сохраняя сам ключ meta2<?php function meta_boxes() { add_meta_box('meta_box', 'Метабокс', 'meta_function', 'post', 'normal', 'high'); } add_action( 'admin_menu', 'meta_boxes' ); function meta_function($post) { wp_nonce_field( basename( __FILE__ ), 'meta__nonce' ); ?> <div class="meta-field-box"> <label>Meta 1</label> <input type="text" name="meta1" value="<?php echo get_post_meta($post->ID, 'meta1',true) ?>" /> </div> <div class="meta-field-box"> <label>Meta 2</label> <input type="text" name="meta2" value="<?php echo get_post_meta($post->ID, 'meta2',true) ?>" /> </div> <?php } function fields_save ( $post_id ) { if ( !isset( $_POST['meta__nonce'] ) || !wp_verify_nonce( $_POST['meta__nonce'], basename( __FILE__ ) ) ) return $post_id; if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return $post_id; if ( !current_user_can( 'edit_post', $post_id ) ) return $post_id; $post = get_post($post_id); if ($post->post_type == 'post') { update_post_meta($post_id, 'meta1', wp_strip_all_tags($_POST['meta1'])); update_post_meta($post_id, 'meta2', wp_strip_all_tags($_POST['meta2'])); } return $post_id; } add_action('save_post', 'fields_save');
Как можно реализовать такое сохранение?
Просмотр 1 ответа (всего 1)
-
Скажем, так:
if ( $_POST['meta2'] == '' ) delete_post_meta($post_id, 'meta2'); else update_post_meta($post_id, 'meta2', wp_strip_all_tags($_POST['meta2']));
Просмотр 1 ответа (всего 1)
- Тема «Как не сохранять пустые данные из Metabox новой записи» закрыта для новых ответов.