Guardando datos de formulario personalizado en la base de datos

31 jul 2018, 23:18:46
Vistas: 22.6K
Votos: 3

Soy nuevo en WordPress. He creado un formulario personalizado en WordPress y necesito saber dónde colocar el código PHP de WPDB para guardar los datos de mi formulario.

Intenté ponerlo directamente en mi página pero no funcionó.

Toda la investigación que he consultado dice que no lo coloque en el archivo functions.php, entonces ¿dónde debo ponerlo?

Aquí está el código que puse en mi página:

Código del Formulario

<form id="myForm" name="myform">
    <select id="brandSel" size="1">
        <option selected="selected" value="">-- Seleccionar Marca --</option>
        <option>Abba</option>
        <option>AG Hair</option>
    </select>

    <input type="submit" value="Enviar" />

</form>

Código PHP

<?php
    global $wpdb; 
    $inputValue = $_POST['newValue']; 
    $wpdb->insert( 
        'catalog', 
        array( 
            'brandSel' => $inputValue 
        ), 
        array( '%s' // si el tipo de campo es string ) 
    );
?>
6
Comentarios

¿Podrías actualizar tu pregunta y añadir tu código actual?

Krzysiek Dróżdż Krzysiek Dróżdż
31 jul 2018 23:31:07

<form id="myForm" name="myform"><select id="brandSel" size="1"> <option selected="selected" value="">-- Seleccionar Marca --</option> <option>Abba</option> <option>AG Hair</option> <option>Agave</option>

</select>

<input type="submit" value="enviar" />

</form>

Abel Sanz Abel Sanz
31 jul 2018 23:42:47

OK, ¿y dónde quieres almacenar esos datos?

Krzysiek Dróżdż Krzysiek Dróżdż
31 jul 2018 23:44:13

En una tabla personalizada que creé en mi base de datos de WordPress

Abel Sanz Abel Sanz
31 jul 2018 23:45:39

¿Podrías también agregar a tu pregunta el código que usas para guardarlo en esa tabla personalizada?

Krzysiek Dróżdż Krzysiek Dróżdż
31 jul 2018 23:46:34

global $wpdb; $inputValue = $_POST['newValue']; $wpdb->insert( 'catalog', array( 'brandSel' => $inputValue ), array( '%s' // si el tipo de campo es string ) );

Abel Sanz Abel Sanz
31 jul 2018 23:51:12
Mostrar los 1 comentarios restantes
Todas las respuestas a la pregunta 1
4

OK, así es como deberías hacerlo de forma correcta...

En tu archivo de plantilla colocas tu formulario:

<form id="myForm" name="myform" action="<?php echo esc_attr( admin_url('admin-post.php') ); ?>" method="POST">
    <input type="hidden" name="action" value="save_my_custom_form" />
    <select id="brandSel" size="1">
        <option selected="selected" value="">-- Seleccionar Marca --</option>
        <option>Abba</option>
        <option>AG Hair</option>
    </select>

    <input type="submit" value="Enviar" />
</form>

Y en el archivo functions.php (o en tu plugin) tendrás que añadir admin_post_{action}:

function my_save_custom_form() {
    global $wpdb;

    $inputValue = $_POST['newValue'];
    $wpdb->insert(
        'catalog',
        array( 'brandSel' => $inputValue ),
        array( '%s' ),
    );

    wp_redirect( site_url('/') ); // <-- aquí va la dirección del sitio a donde el usuario debe ser redirigido después de enviar el formulario
    die;
}

add_action( 'admin_post_nopriv_save_my_custom_form', 'my_save_custom_form' );
add_action( 'admin_post_save_my_custom_form', 'my_save_custom_form' );
1 ago 2018 00:07:55
Comentarios

Voy a usar un plugin, pero ¿dónde coloco el "admin_post_{action}:"?

Abel Sanz Abel Sanz
1 ago 2018 00:16:15

Puedes colocarlo en el functions.php de tu tema. Pero si ese formulario debe ser procesado por un plugin, entonces este código debería estar en tu plugin...

Krzysiek Dróżdż Krzysiek Dróżdż
1 ago 2018 00:18:54

@AbelSanz Hola, ¿te ayudó?

Krzysiek Dróżdż Krzysiek Dróżdż
1 ago 2018 12:38:09

No puedo averiguar dónde colocar la función. Estoy usando el plugin "Header and Footer". ¿Alguna idea?

Abel Sanz Abel Sanz
3 ago 2018 19:35:32