Last active
June 15, 2021 16:50
-
-
Save jmarreros/ebd93b8e7791d119a1924b63f48c59f7 to your computer and use it in GitHub Desktop.
Plugin de ejemplo de proceso por lotes javascript con recarga en WordPress
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* | |
Plugin Name: Proceso por lotes recarga | |
Plugin URI: https://decodecms.com | |
Description: Plugin para demostración de proceso por lotes con recarga javascript | |
Version: 1.0 | |
Author: Jhon Marreros Guzmán | |
Author URI: https://decodecms.com | |
License: MIT | |
*/ | |
// Creación del ítem de menú | |
add_action( 'admin_menu', 'dcms_batch_process_menu' ); | |
function dcms_batch_process_menu() { | |
add_management_page( 'Proceso por lotes recarga', 'Proceso por lotes recarga', 'manage_options', 'dcms_batch_process', 'dcms_batch_process_options' ); | |
} | |
function dcms_batch_process_options(){ | |
$batch = 100; | |
$total = $_GET['total']??false; | |
$step = $_GET['step']??0; | |
$count = $step*$batch; | |
$nonce = wp_create_nonce('dcms-batch-nonce'); | |
$url = admin_url("tools.php?page=dcms_batch_process"); | |
echo "<div class='wrap'>"; | |
echo "<a class='button button-primary' href='".$url."&step=1&nonce=".$nonce."'>Procesar</a>"; | |
echo "</div><hr/>"; | |
if ( $step > 0 && ($count <= $total || ! $total) ){ | |
// Verificamos el nonce | |
if( ! wp_verify_nonce( $_GET['nonce'], 'dcms-batch-nonce' ) ) { | |
error_log('Nonce no válido'); | |
return; | |
}; | |
// Obtenemos el total | |
if ( ! $total ) { | |
$total = dcms_get_total(); | |
} | |
// Función para procesar los datos | |
dcms_process_batch($step, $count); | |
echo "<strong>Procesados: ".$count." de ".$total."</strong><br/>"; | |
echo "<strong>Paso: ".$step."</strong>"; | |
$step++; | |
// Javascript | |
echo "<script type='text/javascript'>"; | |
echo "document.location.href = '".$url."&step=".$step."&total=".$total."&nonce=".$nonce."'"; | |
echo "</script>"; | |
} | |
if ( $count >= $total && $total){ | |
echo "<strong>Fin del proceso</strong>"; | |
} | |
} | |
// Procesar el batch | |
function dcms_process_batch($step, $count){ | |
sleep(2); | |
error_log("step: ". $step ." - count: ". $count); | |
} | |
// Función auxiliar para devolver el total de registros | |
function dcms_get_total(){ | |
return 500; | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment