Всем привет!
Брал из кодекса стандартный код, который добавляет метабокс дополнительные данные для записи, проблема в том, что если данные в них не заполнять, после создания новой записи, в базу данных все равно добавляется ключ метабокса с пустым значением.
Например, есть 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');
Как можно реализовать такое сохранение?