Creé un complemento de wordpress para agregar accesorios y resultados para equipos deportivos dentro de diferentes ligas, puede ver accesorios y resultados para cada liga y eliminarlos/editarlos según sea necesario.
He agregado un botón al final llamado Eliminar, y cuando hago clic en ese botón, me gustaría eliminar la entrada de la tabla y hacer que toda la entrada desaparezca con un desvanecimiento.
He estado buscando sitios web sobre cómo funciona ajax con wordpress, pero me estoy confundiendo.
Este es mi código de botón y javascript en la página fixtures_admin.php dentro de mi complemento.
<input type="button" id="<?php echo $elementid; ?>" class="submitDeleteEntry" name="submitDeleteEntry" value="Delete" /> <script type="text/javascript"> jQuery(document).on('click', '.submitDeleteEntry', function () { var id = this.id; //alert(id); jQuery.ajax({ type: 'POST', url: ajaxurl, data: {"action": "fws_delete_row", "id": id}, success: function (data) { } }); }); </script>El $elementid solo usa la identificación de la variable de la base de datos y funciona según lo previsto.
Si elimino el comentario de la alerta (id); line Recibo una alerta con el id.
He colocado este código en la parte superior de la página registrando el ajax.
function fws_delete_row(){ global $wpdb; $dbtable = $wpdb->prefix . 'fws_fixtures'; $id = $_POST['id']; $wpdb->delete($table, array('id' => $id)); } add_action( 'wp_ajax_fws_delete_row', 'fws_delete_row' ); add_action( 'wp_ajax_nopriv_fws_delete_row', 'fws_delete_row' );Pero cuando hago clic en el botón Eliminar, no pasa nada. He intentado buscar en Internet ejemplos de cómo hacerlo, pero parece que no puedo encontrar la manera de hacerlo.
Estoy feliz de llegar a la conclusión yo mismo, pero si alguien pudiera explicarme dónde me estoy equivocando, realmente me gustaría aprender.
Sé que una vez que ocurra la eliminación de la base de datos, tendré que agregar más código para que la línea se elimine en la página, pero por ahora solo quiero obtener el botón al menos eliminar.
Te agradezco mucho tu ayuda.
Me di cuenta de donde estaba fallando, solo tenía el javascript en la parte inferior del archivo, no lo había registrado correctamente como se indica en esta página https://codex.wordpress.org/AJAX_in_Plugins
Necesitaba cargarlo en admin_footer usando el siguiente código
add_action( 'admin_footer', 'fws_delete_javascript' ); function fws_delete_javascript() { ?> <script type="text/javascript"> jQuery(document).on('click', '.submitDeleteEntry', function () { var id = this.id; //alert(id); jQuery.ajax({ type: 'POST', url: ajaxurl, data: {"action": "fws_delete_row", "id": id}, success: function (data) { } }); }); </script> <? }