Intereting Posts
Форматирование пользовательской даты метаданных с ГГГГ / ММ / ДД на более читаемую альтернативу Существует ли веб-служба XML, которая может получать сообщения, категории и другие данные с сайта? Git Hosting для репозитория плагинов для WordPress SVN Можете ли вы запускать wordpress с несколькими доменами одновременно (не многосетевыми)? Separete trackbacks / pings и пронумерованные комментарии wordpress post pagination с кнопками изображения? WordPress отключает косую черту при импорте API настроек: как создать многопользовательский флажок с категориями блога? Моя функция не работает в WordPress, но снаружи, она работает – что мне не хватает? ограничить выбор пользовательских таксономий одним? Как установить фид Feedburner для использования моего значка? Как создать целевую страницу категории, за которой следуют страницы сообщений? Как сохранить изображение в базе данных с помощью API Transients? Удалить слово «Категория» с страницы продукта WooCommerce Ошибка XMLRPC newPost post_content

Создание и сохранение нескольких мета-боксов

Я создал пользовательский-пост-тип и несколько метаболитов, которые необходимо сохранить. У меня есть функция, которая сохраняет один метаболизм, но я не могу понять, как повторно использовать эту функцию для сохранения всех обменных ящиков.

add_action ("add_meta_boxes", "add_dedications_jh"); function add_dedications_jh() { add_meta_box('jh_dedicationDate', 'Enter Date', 'jh_dedicationDate', 'jh_dedications', 'side', 'default'); add_meta_box('jh_dedicationName', 'Enter Name', 'jh_dedicationName', 'jh_dedications', 'normal', 'default'); add_meta_box('jh_dedicationOccasion', 'Enter Occasion', 'jh_dedicationOccasion', 'jh_dedications', 'normal', 'default'); } function jh_dedicationDate($object, $box) { wp_nonce_field( basename( __FILE__ ), 'dedicationDate_nonce' ); ?> <input type="text" name="dedicationDate" value="<?php echo esc_attr( get_post_meta( $object->ID, 'dedicationDate', true) ); ?>" /> <?php } function jh_dedicationName ($object, $box) { wp_nonce_field( basename( __FILE__ ), 'dedicationName_nonce' ); ?> <input type="text" size="60" name="dedicationName" value="<?php echo esc_attr( get_post_meta( $object->ID, 'dedicationName', true) ); ?>" /> <?php } function jh_dedicationOccasion ($object, $box) { wp_nonce_field( basename( __FILE__ ), 'dedicationOccasion_nonce' ); ?> <input type="text" size="60" name="jh_dedicationOccasion" value="<?php echo esc_attr( get_post_meta( $object->ID, 'dedicationOccasion', true) ); ?>" /> <?php } add_action('save_post', 'jh_save_dedication', 10, 2); function jh_save_dedication($post_id, $post) { /* Verify the nonce before proceeding. */ if ( !isset( $_POST["dedicationDate_nonce"] ) || !wp_verify_nonce( $_POST["dedicationDate_nonce"], basename( __FILE__ ) ) ) return $post_id; if ( !isset( $_POST["dedicationName_nonce"] ) || !wp_verify_nonce( $_POST["dedicationName_nonce"], basename( __FILE__ ) ) ) return $post_id; if ( !isset( $_POST["dedicationOccasion_nonce"] ) || !wp_verify_nonce( $_POST["dedicationOccasion_nonce"], basename( __FILE__ ) ) ) return $post_id; /* Get the post type object. */ $post_type = get_post_type_object( $post->post_type ); /* Check if the current user has permission to edit the post. */ if ( !current_user_can( $post_type->cap->edit_post, $post_id ) ) return $post_id; /* Get the posted data and sanitize it for use as an HTML class. */ $new_meta_value = ( isset( $_POST['dedicationDate'] ) ? sanitize_html_class( $_POST['dedicationDate'] ) : '' ); /* Get the meta key. */ $meta_key = 'dedicationDate'; /* Get the meta value of the custom field key. */ $meta_value = get_post_meta( $post_id, $meta_key, true ); /* If a new meta value was added and there was no previous value, add it. */ if ( $new_meta_value && '' == $meta_value ) add_post_meta( $post_id, $meta_key, $new_meta_value, true ); /* If the new meta value does not match the old value, update it. */ elseif ( $new_meta_value && $new_meta_value != $meta_value ) update_post_meta( $post_id, $meta_key, $new_meta_value ); /* If there is no new meta value but an old value exists, delete it. */ elseif ( '' == $new_meta_value && $meta_value ) delete_post_meta( $post_id, $meta_key, $meta_value ); } 

Solutions Collecting From Web of "Создание и сохранение нескольких мета-боксов"

Вы должны повторить последние 9 строк вашего кода для других 2 полей nonce. Рассмотрим следующую функцию

 function wp64123_sanitize_save_meta($nonce_field){ /* Get the posted data and sanitize it for use as an HTML class. */ $new_meta_value = ( isset( $_POST[$nonce_field] ) ? sanitize_html_class( $_POST[$nonce_field] ) : '' ); /* Get the meta key. */ $meta_key = $nonce_field; /* Get the meta value of the custom field key. */ $meta_value = get_post_meta( $post_id, $meta_key, true ); /* If a new meta value was added and there was no previous value, add it. */ if ( $new_meta_value && '' == $meta_value ) add_post_meta( $post_id, $meta_key, $new_meta_value, true ); /* If the new meta value does not match the old value, update it. */ elseif ( $new_meta_value && $new_meta_value != $meta_value ) update_post_meta( $post_id, $meta_key, $new_meta_value ); /* If there is no new meta value but an old value exists, delete it. */ elseif ( '' == $new_meta_value && $meta_value ) delete_post_meta( $post_id, $meta_key, $meta_value ); } 

Теперь вам нужно вызвать вышеупомянутую функцию для каждого поля nonce.

 wp64123_sanitize_save_meta("dedicationDate"); wp64123_sanitize_save_meta("dedicationName"); wp64123_sanitize_save_meta("dedicationOccassion"); 

Если вы отправляете и обрабатываете форму внутри области администрирования WP, то вы можете использовать check_admin_referer() вместо wp_verify_nonce()

 if ( !empty($_POST) && check_admin_referer('name_of_my_action','name_of_nonce_field') ) { // process form data } 

Подробнее читайте в Codex http://codex.wordpress.org/Function_Reference/wp_nonce_field