El problema
Aunque aún no hemos podido encontrar la causa exacta, tenemos dos clientes a los que les ocurre una cosa más que extraña y es que tienen un plugin, distintos en ambas instalaciones, que al actualizarse se desactivan. Eso es un problema menor en un plugin sin importancia, pero un plugin que sincroniza los pedidos de WooCommerce con un ERP, o un método de pago es más que un problema que se desactive y no se reactive por sí mismo, como debería ocurrir por otra parte de forma natural.
A pesar de que hemos revisado todo lo revisable y que uno de los plugins es de creación de APG, WC – Cetelem payment gateway, por lo que tenemos más que controlado su código y que sabemos que no da ningún tipo de problema en otros cientos de instalaciones, no hemos conseguido dar con la causa que hace que estos dos plugins en concreto, y ningún otro de los que componen ambos sitios web, no se reactiven de forma automática.
La solución
Para resolverlo hemos tenido que crear un código personalizado que se encarga de reactivar automáticamente el plugin que tengamos monitorizado.
Si te encuentras con el mismo problema sólo tienes que añadir este pequeño script PHP en tu fichero functions.php del tema hijo:
Donde tendrás que personalizar la ruta del plugin indicando la que necesitas monitorizar, por ejemplo la ruta de WooCommerce es woocommerce/woocommerce.php, y el nombre del plugin que se mostrará en los mensajes de pantalla.
Pero, ¿y si la carpeta del plugin cambia de nombre cada vez que se actualiza?
Aquí tienes un problema ya que no puedes monitorizarlo con el código PHP propuesto anteriormente y esta casuística concreta es la que ocurre con nuestro plugin WC – Cetelem payment gateway, donde se añade la versión instalada detrás del nombre de la carpeta
Para solucionarlo hemos tenido que crear este otro código PHP:
Donde se busca en el directorio plugins el nombre de la carpeta donde está instalado el plugin a partir de la parte fija del nombre de la misma para poder reactivarlo de nuevo se llame como se llame la carpeta.
Ahora bien este código no recomendamos usarlo tal cual lo mostramos ya que va a ralentizar la ejecución del panel de administración de WordPress y el ADMIN-AJAX, si no que recomendamos ejecutarlo cada cinco minutos añadiéndolo a un evento temporizado, presuponiendo que tienes controlado el WP-CRON y lo ejecutáis cada cinco minutos, si no ya estás tardando en hacerlo.
Por lo tanto la mejor forma de usarlo es así:
De esta forma te aseguras de que el plugin no se quedará desactivado más allá de cinco minutos y de que el rendimiento de tu WordPress no se resienta.
También puedes usar un código muy similar al anterior para asegurarte de que tus plugins más fundamentales no se desactiven más allá de 5 minutos añadiendo un array con el listado de plugins que quieres comprobar, pero eso ya lo dejamos a tu ingenio y creatividad, pero como ves las posibilidades de control sobre los plugins que se abren son múltiples.
Esperamos que te resulte útil este código y como siempre esperamos tus comentarios.
Artículos relacionados
Comentarios



