Terminado

La función en Php con formulario dentro de un modal de arranque no redirige cuando termina.

Publicado el 18 Enero, 2022 en Programación y Tecnología

Sobre este proyecto

Abierto

Dentro de un modal llamé a una función en PHP, que  renderiza un formulario y envía esos datos a otra función que cambia metadatos de un post de wordpress y luego debe redirigir a la misma página, la función realiza todo el proceso pero no refresca la página, aquí las funciones:

Boton de Modal:
<a href="#" data-toggle="tooltip" data-placement="top" title="Dar de Baja">
                    <i class="fas fa-minus-circle" data-toggle="modal" data-target="#modalbaja<?php echo($id_modal); ?>"></i>&nbsp;
                    </a>

Fragmento de Modal:
<!-- Modal baja -->
            <div class="modal fade" id="modalbaja<?php echo($id); ?>" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
                <div class="modal-dialog modal-dialog-centered" role="document">
                    <div class="modal-content">
                        <div class="modal-header">
                        <h5 class="modal-title" id="exampleModalLongTitle">Dar de baja</h5>
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                        </button>
                    </div>
                    <div class="modal-body">
                        <?php dando_de_baja($id); ?>
                    </div>
                    <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-dismiss="modal">Cerrar</button>
                    </div>
                    </div>
                </div>
            </div>
            <!-- Fin modal baja -->

Función en modal:
function dando_de_baja($id){
    if(!empty($id)){
    $baja = get_post_meta( $id, "_baja", true );
    if($baja != 'baja'){
    $user_id = get_current_user_id();
    $user = wp_get_current_user();
    $display_name = $user->display_name;
    $fecha = date("d-m-Y");
    $activo = get_the_title($id);
    $sku = get_post_meta( $id, "_sku", true );
    ?>
    <form method="post">
        <div class="form-group">
            <label for="tituloactivo">Activo</label>
            <input class="form-control" type="text" placeholder="<?php echo $activo; ?>" readonly>
        </div>
        <div class="form-group">
            <label for="skuactivo">Código</label>
            <input class="form-control" type="text" placeholder="<?php echo $sku; ?>" readonly>
        </div>
        <div class="form-group">
            <label for="motivobaja">Motivo de baja</label>
            <textarea rows="3" class="form-control" name="motivo_baja" placeholder="" required></textarea>
            <small id="emailHelp" class="form-text text-muted">Describa el motivo por el cuál está dando de baja el activo.</Small>
        </div>
        <div class="form-group">
            <input id="usuario_baja" name="usuario_baja" type="hidden" value="<?php echo $user_id; ?>">
            <input id="fecha_baja" name="fecha_baja" type="hidden" value="<?php echo $fecha; ?>">
            <input id="id_baja" name="id_baja" type="hidden" value="<?php echo $id; ?>">
            <input id="bajar_activo" name="bajar_activo" type="hidden" value="si">
            <input id="baja" name="baja" type="hidden" value="exitoso">
        </div>
        <div class="modal-footer" style="margin-top: solid 1px black;">
            <img src="https://labs.fixedassets.cl/wp-content/uploads/2022/01/delete_gif.gif" style="width: 10%;">
            <button type="submit" class="btn btn-danger pull-right">Confirmar</button>
        </div>
    </form>
    <?php dar_de_baja($id); ?>
    <?php } else { echo 'El activo consultado ya se encuentra dado de baja, para verificarlo vuelva al listado.'; }
        } Else { echo 'No se encuentra el activo, puede volver y seleccionar el activo a dar de baja.'; }
    Return;
}
Función que procesa los datos del formulario:
function dar_de_baja($id)  {
  $bajar = $_POST['bajar_activo'];
    if($bajar == 'si'){
  $id = $_POST['id_baja'];
  $fecha = $_POST['fecha_baja'];
  $usuario = $_POST['usuario_baja'];
  $motivo = $_POST['motivo_baja'];
  $url = '/editor';
    if(!empty($id)){
        if(!empty($fecha)){
            if(!empty($usuario)){
                if(!empty($motivo)){
                    update_post_meta( $id, '_fechabaja', $fecha );
                    update_post_meta( $id, '_userbaja', $usuario );
                    update_post_meta( $id, '_motivobaja', $motivo );
                    update_post_meta( $id, '_baja', 'baja' );
                    $url = '/editor';
                    header("location: " . $Url);
                }
            } else {  wp_redirect($url); exit(); }
        } else { wp_redirect($url); exit();}
    } else { wp_redirect($url); exit(); }
}
}
Con todo esto cuál sería la mejor opción para que al guardar el formulario, ejecutar la funcion dar_de_baja() redirigiera a la página actual refrescando los cambios.

Gracias

Contexto general del proyecto

El objetivo es lograr que la función o la forma en que he programado esto funcione de manera correcta.

Categoría Programación y Tecnología
Subcategoría Wordpress
¿Cuál es el alcance del proyecto? Desarrollo de sitio personalizado
¿Es un proyecto o una posición? Un proyecto
Actualmente tengo No aplica
Disponibilidad requerida Según se necesite

Plazo de Entrega: No definido

Habilidades necesarias

Otros proyectos publicados por S. S.