d'Economía.net

WORDPRESS

complementos: envío de formulario a admin-post.php WordPress


He estado intentando que funcione un complemento básico y seguí lo que parece ser el flujo para que el formulario se publique en admin-post.php.

Sin embargo, parece que solo aparece la pantalla blanca de la muerte al enviar el formulario.

Este es mi archivo de complemento principal

<?php 
/**
 * Plugin Name: Test form
 */

function wp_meetings_menu(){
    add_menu_page('Meetings', 'Meetings', 'manage_options', 'wp_meetings', 'wp_meetings_form');
}

add_action('admin_menu', 'wp_meetings_menu');

function wp_meetings_form() {
    ?>
    <div class="wrap">
        <h2>Meetings</h2>
        <form method="post" action="<?php echo admin_url('admin-post.php'); ?>" enctype="multipart/form-data">
            <label>Date and Time:</label>
            <input type="datetime-local" name="datetime"><br><br>
            <label>Drop Down 1:</label>
            <select name="dropdown1">
                <option value="option1">Option 1</option>
                <option value="option2">Option 2</option>
                <option value="option3">Option 3</option>
            </select><br><br>
            <label>Drop Down 2:</label>
            <select name="dropdown2">
                <option value="option1">Option 1</option>
                <option value="option2">Option 2</option>
                <option value="option3">Option 3</option>
            </select><br><br>
            <label>Drop Down 3:</label>
            <select name="dropdown3">
                <option value="option1">Option 1</option>
                <option value="option2">Option 2</option>
                <option value="option3">Option 3</option>
            </select><br><br>
            <label>PDF File:</label>
            <input type="file" name="pdf_file"><br><br>
            <input type="submit" name="submit" value="Submit">
            <input type="hidden" name="action" value="wp_meetings_submit" />
        </form>
    </div>
    <?php
}

?>

y este es el código en el archivo funciones.php que se supone que debe manejar ese envío a admin-post.php


// Handle form submission and database insertion
add_action( 'admin_post_wp_meetings_submit', 'wp_meetings_submit' );
add_action( 'admin_post_nopriv_wp_meetings_submit', 'wp_meetings_submit' );

function wp_meetings_submit(){
    global $wpdb;
    if(isset($_POST['submit'])){
        $datetime = $_POST['datetime'];
        $dropdown1 = $_POST['dropdown1'];
        $dropdown2 = $_POST['dropdown2'];
        $dropdown3 = $_POST['dropdown3'];
        $pdf_file = $_FILES['pdf_file']['name'];
        $upload_dir = wp_upload_dir();
        $pdf_path = $upload_dir['path'] . "https://wordpress.stackexchange.com/" . $pdf_file;
        move_uploaded_file($_FILES['pdf_file']['tmp_name'], $pdf_path);
        $wpdb->insert(
            'wp_meetings',
            array(
                'datetime' => $datetime,
                'dropdown1' => $dropdown1,
                'dropdown2' => $dropdown2,
                'dropdown3' => $dropdown3,
                'pdf_file' => $pdf_file
            ),
            array(
                '%s',
                '%s',
                '%s',
                '%s',
                '%s'
            )
        );
    }
}

Todo lo que obtengo al publicar el formulario es una pantalla blanca de muerte con un cuadro de error de mensaje de muerte en blanco.

Configuré WP_DEBUG para que sea verdadero, pero al volver a crear el error, no se genera ningún registro de depuración.

Me preguntaba cuál es la forma correcta y completa de lograr esto.



Recent Questions – WordPress Development Stack Exchange

RELACIONADOS