Skip to content

Instantly share code, notes, and snippets.

@jmarreros
Last active June 15, 2021 16:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jmarreros/ebd93b8e7791d119a1924b63f48c59f7 to your computer and use it in GitHub Desktop.
Save jmarreros/ebd93b8e7791d119a1924b63f48c59f7 to your computer and use it in GitHub Desktop.
Plugin de ejemplo de proceso por lotes javascript con recarga en WordPress
<?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