WordPress.org

Make WordPress Core

Ticket #13401: 13401.2.patch

File 13401.2.patch, 1.6 KB (added by ocean90, 8 years ago)

edit_post() shouldn't start add_meta()

  • wp-admin/admin-ajax.php

     
    859859        check_ajax_referer( 'add-meta' );
    860860        $c = 0;
    861861        $pid = (int) $_POST['post_id'];
     862        $post = get_post( $pid );
     863
    862864        if ( isset($_POST['metakeyselect']) || isset($_POST['metakeyinput']) ) {
    863865                if ( !current_user_can( 'edit_post', $pid ) )
    864866                        die('-1');
    865867                if ( isset($_POST['metakeyselect']) && '#NONE#' == $_POST['metakeyselect'] && empty($_POST['metakeyinput']) )
    866868                        die('1');
    867                 if ( $pid < 0 ) {
     869                if ( $post->post_status == 'auto-draft' ) {
     870                        $save_POST = $_POST; // Backup $_POST
     871                        $_POST = array(); // Make it empty for edit_post()
     872                        $_POST['action'] = 'draft'; // Warning fix
     873                        $_POST['post_ID'] = $pid;
     874                        $_POST['post_type'] = $post->post_type;
     875                        $_POST['post_status'] = 'draft';
    868876                        $now = current_time('timestamp', 1);
    869                         if ( $pid = wp_insert_post( array(
    870                                 'post_title' => sprintf('Draft created on %s at %s', date(get_option('date_format'), $now), date(get_option('time_format'), $now))
    871                         ) ) ) {
     877                        $_POST['post_title'] = sprintf('Draft created on %s at %s', date(get_option('date_format'), $now), date(get_option('time_format'), $now));
     878
     879                        if ( $pid = edit_post() ) {
    872880                                if ( is_wp_error( $pid ) ) {
    873881                                        $x = new WP_Ajax_Response( array(
    874882                                                'what' => 'meta',
     
    876884                                        ) );
    877885                                        $x->send();
    878886                                }
     887                                $_POST = $save_POST; // Now we can restore original $_POST again
    879888                                if ( !$mid = add_meta( $pid ) )
    880889                                        die(__('Please provide a custom field value.'));
    881890                        } else {