fatal error - admin-post.php results on white screen after form submission

admin2025-01-08  8

This is a strange error because it wasn't happening earlier, it was actually all working fine. I have removed all the code I have added since I last tested it and it was working before it broke.

I have a custom post acting as a page to submit a form on and I am processing the form via a function in the functions.php page in my plugin.

function tm_add_new_job() {

    if ( empty($_POST) || !wp_verify_nonce($_POST['tm_add_new_job'],'tm_add_new_job') ) {

        wp_nonce_ays();

        die();

    } else {

        $type = $_POST['contacttype'];

        switch ($type) {

            case 'email':

                $title   = $_POST['title'];
                $name    = $_POST['name'];
                $surname = $_POST['surname'];
                $email   = $_POST['email'];

                if (!empty($email)) {

                    // Post new job and customer
                    $new_customer_id = tm_add_customer($title, $name, $surname);

                    $new_job_id      = tm_add_job($new_customer_id);

                    // Assign link to about_you page
                    $about_you       = get_page_by_path( 'about-you', '', 'jobs' );

                    $linked          = get_post_permalink($about_you->ID);

                    $secret          = get_post_meta( $new_customer_id, 'customer_secret', true );

                    $link            = $linked .'?customer='. $new_customer_id .'&secret='. $secret;

                    tm_mail_lead($email, $from, $custom, $link);

                    // Add job ID to customer
                    add_metadata( 'post', $new_customer_id, 'job_id', $new_job_id, false );

                    if (!empty($title)) {

                        // Add customer title
                        add_metadata( 'post', $new_customer_id, 'customer_title', $title, false );

                    }

                    if (!empty($name)) {

                        // Add customer name
                        add_metadata( 'post', $new_customer_id, 'customer_name', $name, false );

                    }

                    if (!empty($surname)) {

                        // Add customer surname
                        add_metadata( 'post', $new_customer_id, 'customer_surname', $surname, false );

                    }

                    // Add customer email
                    add_post_meta( $new_customer_id, 'customer_email', $email, false );

                } else {

                    // No email - Fail
                    wp_redirect( tm_new_job_link());
                }

                break;

            case 'text':

                $title   = $_POST['sms_title'];
                $name    = $_POST['sms_name'];
                $surname = $_POST['sms_surname'];
                $mobile  = $_POST['mobile'];

                if (!empty($mobile)) {

                    // Post new job and customer
                    $new_customer_id = tm_add_customer($title, $name, $surname);

                    $new_job_id      = tm_add_job($new_customer_id);

                    // Add job ID to customer
                    add_metadata( 'post', $new_customer_id, 'job_id', $new_job_id, false );

                    if (!empty($title)) {

                        // Add customer title
                        add_metadata( 'post', $new_customer_id, 'customer_title', $title, false );

                    }

                    if (!empty($name)) {

                        // Add customer name
                        add_metadata( 'post', $new_customer_id, 'customer_name', $name, false );

                    }

                    if (!empty($surname)) {

                        // Add customer surname
                        add_metadata( 'post', $new_customer_id, 'customer_surname', $surname, false );

                    }

                    // Add customer email
                    add_metadata( 'post', $new_customer_id, 'customer_mobile', $mobile, false );

                } else {

                    // No Mobile Number - Fail
                    wp_redirect( tm_new_job_link());
                }


                break;

            case 'customer':

                $image = 'quoting.png';

                break;

        }

        if ($_FILES) {

            // Make sure that this file is included, as wp_generate_attachment_metadata() depends on it.
            require_once(ABSPATH . "wp-admin" . '/includes/image.php');
            require_once(ABSPATH . "wp-admin" . '/includes/file.php');
            require_once(ABSPATH . "wp-admin" . '/includes/media.php');

            $file = $_FILES[featured_image];

            $file_return = wp_handle_upload( $file, array('action' => 'tm_add_new_job' ) );

            if( isset( $file_return['error'] ) || isset( $file_return['upload_error_handler'] ) ) {

              return false;

            } else {

                $filename = $file_return['file'];

                $attachment = array(
                    'post_mime_type' => $file_return['type'],
                    'post_title'     => preg_replace( '/\.[^.]+$/', '', basename( $filename ) ),
                    'post_content'   => '',
                    'post_status'    => 'inherit',
                    'guid' => $file_return['url']
                );

                $attachment_id = wp_insert_attachment( $attachment, $file_return['url'] );

                // Generate the metadata for the attachment, and update the database record.
                $attachment_data = wp_generate_attachment_metadata( $attachment_id, $filename );
                wp_update_attachment_metadata( $attachment_id, $attachment_data );

                set_post_thumbnail( $new_job_id, $attachment_id );

            }

        }

        // success go to new job post.
        wp_redirect( get_permalink($new_job_id));
    }

}
add_action( 'admin_post_tm_add_new_job', 'tm_add_new_job' );

FYI: The form works and the data is inserted into the database, the only problem is it is stuck on a blank (white screen) admin-post.php page. What am I doing wrong here?

UPDATE:

I have discovered that it redirects only if I upload an image?

This is a strange error because it wasn't happening earlier, it was actually all working fine. I have removed all the code I have added since I last tested it and it was working before it broke.

I have a custom post acting as a page to submit a form on and I am processing the form via a function in the functions.php page in my plugin.

function tm_add_new_job() {

    if ( empty($_POST) || !wp_verify_nonce($_POST['tm_add_new_job'],'tm_add_new_job') ) {

        wp_nonce_ays();

        die();

    } else {

        $type = $_POST['contacttype'];

        switch ($type) {

            case 'email':

                $title   = $_POST['title'];
                $name    = $_POST['name'];
                $surname = $_POST['surname'];
                $email   = $_POST['email'];

                if (!empty($email)) {

                    // Post new job and customer
                    $new_customer_id = tm_add_customer($title, $name, $surname);

                    $new_job_id      = tm_add_job($new_customer_id);

                    // Assign link to about_you page
                    $about_you       = get_page_by_path( 'about-you', '', 'jobs' );

                    $linked          = get_post_permalink($about_you->ID);

                    $secret          = get_post_meta( $new_customer_id, 'customer_secret', true );

                    $link            = $linked .'?customer='. $new_customer_id .'&secret='. $secret;

                    tm_mail_lead($email, $from, $custom, $link);

                    // Add job ID to customer
                    add_metadata( 'post', $new_customer_id, 'job_id', $new_job_id, false );

                    if (!empty($title)) {

                        // Add customer title
                        add_metadata( 'post', $new_customer_id, 'customer_title', $title, false );

                    }

                    if (!empty($name)) {

                        // Add customer name
                        add_metadata( 'post', $new_customer_id, 'customer_name', $name, false );

                    }

                    if (!empty($surname)) {

                        // Add customer surname
                        add_metadata( 'post', $new_customer_id, 'customer_surname', $surname, false );

                    }

                    // Add customer email
                    add_post_meta( $new_customer_id, 'customer_email', $email, false );

                } else {

                    // No email - Fail
                    wp_redirect( tm_new_job_link());
                }

                break;

            case 'text':

                $title   = $_POST['sms_title'];
                $name    = $_POST['sms_name'];
                $surname = $_POST['sms_surname'];
                $mobile  = $_POST['mobile'];

                if (!empty($mobile)) {

                    // Post new job and customer
                    $new_customer_id = tm_add_customer($title, $name, $surname);

                    $new_job_id      = tm_add_job($new_customer_id);

                    // Add job ID to customer
                    add_metadata( 'post', $new_customer_id, 'job_id', $new_job_id, false );

                    if (!empty($title)) {

                        // Add customer title
                        add_metadata( 'post', $new_customer_id, 'customer_title', $title, false );

                    }

                    if (!empty($name)) {

                        // Add customer name
                        add_metadata( 'post', $new_customer_id, 'customer_name', $name, false );

                    }

                    if (!empty($surname)) {

                        // Add customer surname
                        add_metadata( 'post', $new_customer_id, 'customer_surname', $surname, false );

                    }

                    // Add customer email
                    add_metadata( 'post', $new_customer_id, 'customer_mobile', $mobile, false );

                } else {

                    // No Mobile Number - Fail
                    wp_redirect( tm_new_job_link());
                }


                break;

            case 'customer':

                $image = 'quoting.png';

                break;

        }

        if ($_FILES) {

            // Make sure that this file is included, as wp_generate_attachment_metadata() depends on it.
            require_once(ABSPATH . "wp-admin" . '/includes/image.php');
            require_once(ABSPATH . "wp-admin" . '/includes/file.php');
            require_once(ABSPATH . "wp-admin" . '/includes/media.php');

            $file = $_FILES[featured_image];

            $file_return = wp_handle_upload( $file, array('action' => 'tm_add_new_job' ) );

            if( isset( $file_return['error'] ) || isset( $file_return['upload_error_handler'] ) ) {

              return false;

            } else {

                $filename = $file_return['file'];

                $attachment = array(
                    'post_mime_type' => $file_return['type'],
                    'post_title'     => preg_replace( '/\.[^.]+$/', '', basename( $filename ) ),
                    'post_content'   => '',
                    'post_status'    => 'inherit',
                    'guid' => $file_return['url']
                );

                $attachment_id = wp_insert_attachment( $attachment, $file_return['url'] );

                // Generate the metadata for the attachment, and update the database record.
                $attachment_data = wp_generate_attachment_metadata( $attachment_id, $filename );
                wp_update_attachment_metadata( $attachment_id, $attachment_data );

                set_post_thumbnail( $new_job_id, $attachment_id );

            }

        }

        // success go to new job post.
        wp_redirect( get_permalink($new_job_id));
    }

}
add_action( 'admin_post_tm_add_new_job', 'tm_add_new_job' );

FYI: The form works and the data is inserted into the database, the only problem is it is stuck on a blank (white screen) admin-post.php page. What am I doing wrong here?

UPDATE:

I have discovered that it redirects only if I upload an image?

Share Improve this question edited Oct 12, 2017 at 18:08 fuxia 107k38 gold badges255 silver badges459 bronze badges asked Oct 12, 2017 at 14:44 lukgohlukgoh 4084 silver badges13 bronze badges 2
  • Do you have debugging enabled? – Milo Commented Oct 12, 2017 at 15:35
  • Yes. Debugging is on. – lukgoh Commented Oct 12, 2017 at 15:36
Add a comment  | 

2 Answers 2

Reset to default 0

The problem was:

if ($_FILES) {}

Can someone explain this to me? The wp_redirect() is outside of this if statement so why wouldn't it redirect? Is it because that if statement was still firing but ran into an error as no files were being uploaded?

This might be an issue:

wp_redirect( tm_new_job_link()); has to be followed by exit;

转载请注明原文地址:http://conceptsofalgorithm.com/Algorithm/1736270821a1458.html

最新回复(0)