Avisos
Vaciar todo

Automatizar "Tablas de búsqueda de productos" de WooCommerce  

 
Ignacio
 Ignacio
Nuevo usuario

Hola buenas, tengo un problema aparentemente sencillo, debido a un sistema automático propio para actualizar precios de mi catálogo online, el cual, cambia los precios de los productos de mi WooCommerce, en base a un .json cada día, ejecutado diariamente por un CRON.

El problema de dicha actualización diaria es que WooCommerce al parecer separa las tablas de datos de primer nivel como el: _price, _regular_price, etc. con otra tabla de datos secundaria utilizada para el buscador de WooCommerce (ordenar por precio [Descendente/Ascendente]), y por lo tanto, dicha actualización lo que genera cada día es romper/desactualizar dicha tabla secundaria, y por lo tanto cada día que pasa y se van añadiendo nuevos productos, estos se desordenan en caso de querer ordenarlos por precio, pues la tabla de primer nivel no coincide con la tabla rota/desactualizada de segundo nivel.

Para solucionarlo es muy sencillo, en: Admin > WooCommerce > Estado > Herramientas -> vemos un botón para "Regenerar Tablas de búsqueda de productos", con dicha regeneración lo que hacemos es sincronizar la tabla de primer nivel comentada (_price, _regular_price, etc) con la tabla encargada con los filtros ya comentados (?swoof=1&orderby=price), dichos filtros son del plugin "WOOF - WooCommerce Products Filter".

Adjunto captura de pantalla de dicho botón.

Screenshot 1 (3)

Dicho lo cual, mi pregunta es sencilla, como puedo automatizar ese botón para cada día, posterior a la actualización de precios. En la documentación de WooCommerce no he encontrado info al respecto.

Alguna información que he encontrado (creo que se comenta una solución al problema que tengo, pero no se aplicarlo): https://wordpress.org/support/topic/how-run-automatic-regenerate-product-lookup-tables-by-cron-job

También he encontrado un plugin que aparentemente hace lo que comento en este post, además está hecho especialmente para usuarios con este mismo problema, sin embargo, me gustaría poder prescindir de tener que instalar un plugin.
Plugin: https://wordpress.org/plugins/regenerate-product-lookup-table-for-woocommerce/

Contenido solo visible a usuarios registrados

Citar
Respondido : 28/03/2022 4:15 pm
Bruno
 Bruno
Soporte CMS Webempresa Moderator

Hola Ignacio,

Parece que ya has encontrado un par de soluciones sin embargo puedo agregar una mas a la lista donde comparten un snippet de código https://wordpress.org/support/topic/how-to-auto-generate-product-table/

Echale un vistazo al tema donde le dan solución con el código, de no funcionar te queda la alternativa del plugin que tiene buena pinta

Saludos!

ResponderCitar
Respondido : 28/03/2022 5:02 pm
Ignacio me gusta

optimiza-automaticamente-todas-las-imagenes-de-tu-wordpress

Ignacio
 Ignacio
Nuevo usuario

@bruno-vichetti ¡Pero bueno! No se donde encontraste este snippet ( https://gist.github.com/EricBusch/7373a3aac5ee77e5ab341858f5292890 ), mira que estuve buscando y buscando y no encontraba nada...

A priori parece estar perfecto, lo que he hecho es introducirlo como un archivo PHP dentro del directorio de mi plugin personalizado que tengo, el cual se dedica a actualizar los precios de los productos.

Sí veo que funciona actualizaré esta entrada al foro como resuelto, ¡muchas gracias!

ResponderCitar
Respondido : 29/03/2022 9:46 am
Pepe
 Pepe
Soporte CMS Webempresa Admin

Hola Ignacio.

Ok dejo el hilo abierto por si necesitas retomarlo.

 

Un saludo

ResponderCitar
Respondido : 29/03/2022 9:59 am

wpdoctor-revisa-la-salud-de-tu-wordpress

Ignacio
 Ignacio
Nuevo usuario

@pepesoler Hola se ve que sí 😓, adjunto captura del esquema que he utilizado, como he introducido el snippet comentado en el anterior mensaje mío.

Screenshot 1

Como se puede observar lo único que he hecho es añadirlo a un plugin personalizado ya existente, sin embargo, aún siendo un snippet aparentemente funcional y sin errores de sintaxis y demás, no logro hacer que se ejecute, en la función que se dedica a ejecutar el cronómetro en base a una constante de Wordpress "HOUR_IN_SECONDS " ( https://wpseek.com/constant/hour_in_seconds/ ) he probado de cambiarlo a "60" (60 segundos) y sigue sin ejecutarse.

Se me a olvidado algo o hay algo que se me escapa? En teoría por lo que tengo entendido estos archivos dentro del directorio /plugins están siempre en "observación" verdad?

ResponderCitar
Respondido : 29/03/2022 10:22 am
Pepe
 Pepe
Soporte CMS Webempresa Admin

Hola Ignacio.

En el foro no damos soporte a código.

Puedes revisar lo siguiente:

-> https://developer.woocommerce.com/2019/04/01/performance-improvements-in-3-6/

-> https://stackoverflow.com/questions/62487083/how-can-run-automatic-regenerate-product-lookup-tables-on-woocommerce-status

 

Lo que no entiendo es si teniendo plugins para esa tarea cono el que te indico no lo utilizas y te evitas problemas, esta clase de plugins no consumen recursos:

-> https://es.wordpress.org/plugins/regenerate-product-lookup-table-for-woocommerce/

 

Un saludo

ResponderCitar
Respondido : 29/03/2022 12:44 pm

Cursos Gratuitos WordPress