Wordpress : Que es admin-post.php

Fecha Publicación:       22 de Mayo de 2024
Fecha Modificación:       17 de Julio de 2024

WordPress dispone de dos hooks especiales para recibir datos de un formulario:

admin_post se encarga de procesar datos de forma síncrona. Eso significa que nos tendremos que valer de redirecciones y tendremos que volver a cargar la página.

wp_ajax por su parte permite procesar los datos de forma asícrona de modo que no será necesario recargar la página pero deberemos hacer uso de JavaScript.

admin_post

admin-post.php es un archivo en WordPress que permite manejar peticiones POST desde el área de administración. En WordPress, cuando necesitas realizar acciones complejas o procesar datos desde un formulario en el área de administración, generalmente envías esos datos a admin-post.php. Este archivo maneja la solicitud y luego la redirige al controlador apropiado para procesarla.

Por ejemplo, si tienes un formulario en el panel de administración de WordPress que permite a los usuarios actualizar cierta configuración del sitio, el formulario enviaría los datos a admin-post.php con una acción específica asociada a ella. Luego, puedes registrar un controlador para esa acción usando la función add_action() de WordPress, lo que permite procesar los datos recibidos y realizar las acciones necesarias, como actualizar opciones, guardar datos en la base de datos, enviar correos electrónicos, etc.

Usar admin-post.php es una práctica común en el desarrollo de complementos (plugins) y temas (themes) de WordPress para manejar acciones en el backend de manera segura y eficiente.

ejemplo

<form method="post" action="<?php echo admin_url('admin-post.php') ?>" 
    class="miformulario1">
      	<input type="text" name="name" id="name" class="miclasetexto1" 
         placeholder="Nombre" required>

      	<input type="hidden" name="action" value="process_form">
      	<input type="submit" name="submit" class="miclase_boton_enviar1" 
        value="Enviar Mensaje">
 </form>

Creamos una funcion

add_action( 'admin_post_nopriv_process_form', 'send_mail_data' );
add_action( 'admin_post_process_form', 'send_mail_data' );


function send_mail_data() {
	$name = sanitize_text_field($_POST['name']);
	$email = sanitize_email($_POST['email']);
	$message = sanitize_textarea_field($_POST['message']);

	$adminmail = $email;
	$subject = 'Formulario de contacto'; //asunto
	
	$headers[] = 'Content-type: text/plain; charset=utf-8';  	
     $headers[] = 'From: webmaster gamatel-unlock <webmaster@gamatel-unlock.com>';
	
	//Cuerpo del mensaje
	$msg = "Nombre: " . $name . "\n";
	$msg .= "E-mail: " . $email . "\n\n";
	$msg .= "Mensaje: \n\n" . $message . "\n";
	
	$sendmail = wp_mail( $adminmail, $subject, $msg, $headers);

	if ( $sendmail ) {
		wp_redirect( home_url("/contactenos")."?sent=".$sendmail ); //asumiendo que existe esta url
	}
	else {
		echo "hubo un error";
	}
}

Vea tambien:

→  WordPress : admin_post_process_form  y  admin_post_nopriv_process_form

Fuente : https://chatgpt.com/

 

Articulo : 469 - Veces Leidas
Compartir Articulo:

Artículos Relacionados