Caso: Cuando un usuario envía un formulario (Gravedad), el complemento genera automáticamente un ID de entrada único para ese formulario específico. En mi caso, la configuración del formulario solo permite al usuario enviar el formulario una vez, y solo si el usuario está registrado. Cuando el usuario envía el formulario, se crea una página con el contenido del formulario. La URL de esa página se genera dinámicamente y se basa en el ID de entrada (www.example.com/entry-ID).
Pregunta: Después de que el usuario haya enviado un formulario y haya iniciado sesión, quiero mostrar un enlace a la página creada por el usuario. No solo justo después del envío, sino cada vez que el usuario inicia sesión nuevamente. Pero, ¿cómo obtener y mostrar el ID de entrada de ese usuario en una página si ese usuario ha iniciado sesión?
Tengo este código en la página.php para identificar al usuario y determinar qué mostrar:
<?php if ( is_user_logged_in() ) { ?>
<?php global $wpdb;
$user = wp_get_current_user();
$where = get_posts_by_author_sql( 'page', true, $user->ID );
$count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts $where" );
if ( $count >= 1 ) { ?>
// This is what user see if form is submitted, where '{entry-ID}' should be replaced by the user's entry iD
<h2>Hey <?php echo $current_user->display_name ?>, thank you for submitting the form. Visit your page here: www.example.com/{entry-ID}</h2>
<?php } else { ?>
// If user have not submitted a form, user is shown the info below with the form to submit
<h2>Hey <?php echo $current_user->display_name ?>, Thank you for joining. To create a page please submit the form below:</h2><?php echo do_shortcode('[gravityform id="2" name="just a form" title="false" description="false"]'); ?>
<?php } } else { ?>
// if user is not logged in, user is urged to log in to submit form
<h2><Please log in to create a page <?php do_action( 'wordpress_social_login' ); ?></h2>
<?php } ?>
Esta es la función que utilizo para hacer el formulario (ID = 2) para crear una 'página':
add_filter("gform_post_data", "change_post_type", 10, 2);
function change_post_type($post_data, $form){
//only change post type on form id 1
if($form["id"] != 2)
return $post_data;
$post_data["post_type"] = "page";
return $post_data;
}