• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar a la barra lateral principal

DecodeCMS

Tu WordPress a otro Nivel ...

  • Acerca de
  • Contacto
  • Inicio
  • Tutoriales
    • Themes
    • Plugins
    • Core
    • Recursos
  • Cursos
  • Acceder
    • Mis cursos
    • Mi Cuenta
    • Acceder
Inicio / Tutoriales / Plugins / Procesamiento de datos por lotes en WordPress utilizando Locomotive

Procesamiento de datos por lotes en WordPress utilizando Locomotive

Procesamiento de datos por lotes en WordPress utilizando Locomotive

[ 12 mayo 2020 ] [ Autor: Jhon Marreros Guzmán ][ Plugins - Avanzado] [ ]

herramientas

¿Me ayudas a llegar a más gente?

Twittear Compartir LinkedIn WhatsApp

Si tienes un sitio web WordPress con una gran cantidad de datos, seguramente has podido comprobar que cuando corres código personalizado sobre esos datos terminas recargando tu servidor y en algunos casos puede incluso quedar el proceso incompleto.

 

Generalidades

En WordPress tienes dos opciones por defecto para procesar gran cantidad de datos:

  1. La primera es hacer uso de wp-cli, sin embargo no todos los Hosting tienen esta funcionalidad habilitada (por temas de seguridad) o no brindan acceso SSH a consola.
  2. La otra opción para procesar gran cantidad de datos es a través de la funcionalidad wp-cron, aunque el procesamiento dependerá del cron programado.

 
En este artículo veremos una forma alterna, veremos como procesar gran cantidad de datos por lotes ayudándonos del plugin Locomotive

 

¿Qué es Locomotive?

Locomotive es una librería de procesamiento en lotes creada como plugin que te ayuda a gestionar la complejidad de hacer cambios a grandes cantidades de datos.

Logo Locomotive

 
Locomotive automáticamente divide una consulta, que implica la recuperación de muchos datos, en pequeñas consultas, cuando se ejecuta cada consulta nos brinda una función callback en la cual puedes agregar tu código personalizado.

La facilidad de Locomotive es que se instala como plugin y esta disponible desde la administración de WordPress, puedes registrar la cantidad de tareas que necesites y correr tu código por lotes cuando lo requieras, tal como se muestra en la siguiente imagen.

Funcionamiento de proceso por lotes

 

Descarga e Instalación

Puedes descargar el plugin desde el repositorio del autor en Github: Locomotive

Descargar archivo .zip Github

 
Descargará un archivo .zip el cual puedes instalar desde WordPress en el menú: PLugins > Añadir nuevo.

Una vez el plugin esta instalado y activado, verás una nueva opción de menú como parte del menú de Herramientas

Opción de menú para el plugin Locomotive

 

Creación de Proceso por lotes

Para configurar un proceso por lotes usaremos un Hook llamado locomotive_init, este hook hará referencia a una función en donde se usará una función de registro del proceso de batch llamada register_batch_process.

La sintaxis básica es:

function dcms_register_my_batch_processes() {
  register_batch_process(
    'name' => '',
    'type' => '',
    'args' => array(),
    'callback' => ''
  );
}
add_action( 'locomotive_init', 'dcms_register_my_batch_processes' );

 
La función register_batch_process tiene varios argumentos

  • name: El nombre del proceso que aparecerá como parte del listado de procesos que puede ejecutar el plugin. Evita el uso de caracteres especiales como nombre del proceso.
  • type: Hace referencia al tipo de datos que se devolverá en el callback, los posibles valores son: post, user, comment, term, site (en el caso de un multisite)
  • args: Usado para pasar parámetros adicionales a la consulta que se genera en base a type, funcionará cualquier parámetro que use la clase WP_Query
  • callback: Esta es la función que se ejecutará por cada registro devuelto, acepta como parámetro un objeto del type definido

Para más información puedes consultar la documentación de Locomotive

 

Ejemplo de creación de Proceso por Lotes

En este sencillo ejemplo vamos a contar la cantidad de caracteres de cada una de las entradas, al final reportaremos el título de la entrada y la cantidad de caracteres por cada una de ellas.

Para facilitar las cosas imprimiremos los resultados con la función error_log, puedes revisar el artículo cómo depurar PHP en WordPress para ver cómo capturar los mensajes de error_log
// Creación del proceso por lotes
function dcms_my_batch_process() {
  register_batch_process( array(
    'name'     => 'Cuenta caracteres entradas',
    'type'     => 'post',
    'callback' => 'dcms_count_chars_entries',
    'args'     => array(
      'posts_per_page' => 10,
      'post_type'      => 'post',
      'post_status'	=> 'publish'
    )
  ) );
}
add_action( 'locomotive_init', 'dcms_my_batch_process' );

// Callback por cada entrada
function dcms_count_chars_entries( $post ) {
	// Lógica para contar caracteres
    $content = $post->post_content;
    $string = strip_tags($content);
	$string = preg_replace("/\s/", "", $string);
	$character_count = strlen($string);

	// Imprimimos los resultados
	$print = $post->post_title .' - '. $character_count;
	error_log( print_r( $print , true ));
}

Puedes agregar este código al final del archivo style.css de tu tema hijo
Para ver más ejemplos de código usando procesos por lotes revisa el sitio de Locomotive.

Luego de agregar este código verás que tendrás un nuevo proceso por lotes disponible para ejecutar.

Creación de proceso por lotes

 

Conclusión

Procesar por lotes una gran cantidad de datos en WordPress no tiene por que ser una tarea compleja, puedes usar Locomotive y evitar realizar la funcionalidad de proceso por lotes y sólo concentrarte en realizar tu código.
 

¿Aún con dudas?, en el siguiente video se detallan los puntos anteriores.

Suscríbete a DecodeCMS:  

 

¿Me ayudas a llegar a más gente?

Twittear Compartir LinkedIn WhatsApp

Artículos Relacionados

  • Código para procesamiento por lotes en WordPressCódigo para procesamiento por lotes en WordPress
  • wp-cron en WordPressTareas automáticas con wp-cron en WordPress
  • WP CLI para WordPressWP CLI: Interfaz de línea de comandos para WordPress
  • Cargar scripts y estilos de Contact Forms 7 condicionalmenteCargar scripts y estilos de Contact Forms 7 condicionalmente
Valora este artículo : 1 barra2 barras3 barras4 barras5 barras (2 votos, promedio: 5,00 de 5)
Cargando...

Interacciones con los lectores

Para escribir código envolver con: <pre class="language-xxx"><code> </code></pre> ,reemplaza las xxx (php, css, html)

*

* Gravatar habilitado

Barra lateral principal

Presentación

Curso Decodifica WordPress

Únete a DecodeCMS

Recibirás como regalo:

Guia práctica con video:
¿Quieres agregar código a WordPress? Revisa las diferentes opciones que tienes.Ver más

Jooble
Alojamiento Wordpress

Niveles

Básico Intermedio Avanzado

Etiquetas

accesibilidad css dashboard editor error funcionalidad herramientas imagen js librería mejoras optimización seguridad social woocommerce

Populares

Ajax en WordPress de manera correcta

Plantillas de página en WordPress

Mostrar subcategorías de una categoría en listado de entradas

Modificar el precio de un producto por código en WooCommerce

© logo decode pie
Política de Privacidad | Política de devoluciones
Copyrigth 2023 Todos los derechos reservados