Saltar al contenido

Categoría: Desarrollo web

Cambiar la versión de PHP en Laradock

Desde hace un par de años, se libera una versión de PHP cada año y por lo tengo para estar al día, es recomendable estar actualizando el código para que sea compatible con futuras versiones. Si utilizas alguna herramienta de contenedores como Docker y tienes tu stack armado allí tarde o temprano tienes que cambiar de versión. Pero si usas PHP en laradock, el proceso es muy fácil como puedes ver.

Cambio de versión de PHP en laradock

El primer paso es ir a la carpeta raíz de Laradock y buscar el archivo de variables de entorno llamado .env. Ábrelo con tu editor de textos favorito y buscar la variable de entorno denominada PHP_VERSION y escribir la versión deseada, por ejemplo:

PHP_VERSION=8.2

Reconstruir imágenes

Luego debes volver a construir los contenedores de php-fpm que es el que procesa el código PHP en laradock y el de workspace para poder ejecutar scripts de PHP como composer, phpcs, entre otros.

docker-compose build php-fpm
docker-compose build workspace

Luego para que los cambios tomen efecto, debes reiniciar los contenedores. En mi caso como uso un stack LAMP sería:

docker-compose down
docker-compose up -d nginx mariadb phpmyadmin workspace

Comprobar que la versión de PHP en laradock es correcta

Y finalmente ya todo debería estar en la versión definida. Para comprobar, puedes crear un archivo .php con la función php_info() por dentro para imprimir todos los datos de la versión. Para el caso del workspace puedes ejecutar: php –version y ver la versión instalada.

Finalmente, espero que te sirva y puedas usar PHP en laradock con la versión que desees. Si necesitas volver a la versión anterior, simplemente edita de nuevo el archivo .env y comienza de nuevo.

Deja un comentario

Comprobar si una pasarela de pago esta activa en WooCommerce

Si en WooCommerce necesitas comprobar si una pasarela de pago esta activa. Puedes obtener un listado de las pasarelas de pago (gateways) disponibles en el sitio con la función:

WC()->payment_gateways->get_available_payment_gateways();

El problema de esta función es que estas instanciando WooCommerce y en algunos casos, algunas pasarelas dejan de registrarse o se esconden por motivos de seguridad. Esto hace que fallen mas adelante cuando realmente deben mostrarse en el checkout. Además, si necesitas comprobar si una pasarela pago está activa en un momento donde no se ha cargado WooCommerce. Necesitas una alternativa a esta función

Comprobar si una pasarela pago está activa desde la base de datos

Una alternativa segura es consultar la información directamente desde la base de datos. Así no necesitas implementar o instanciar objetos. El costo de la consulta es mínimo y queda en caché para futuros accesos (si se usa $wpdb).

WooCoommerce guarda la información de una pasarela de pagos en la base de datos en la tabla options bajo el nombre «woocommerce_idDelGateway_settings». Si el id de tu pasarela es «pagos_con_tarjeta» entonces la información se guarda bajo el nombre woocommerce_pagos_con_tarjeta_settings.

Como la información se guarda en formato JSON. Sólo necesitamos contar el registro bajo el nombre anterior que tenga el valor enabled: true dentro del contenido del JSON.

Para ello hacemos la siguiente función que buscará si existe el valor o no:

function is_enabled($gateway_name) {
  global $wpdb;

  $query = "SELECT COUNT(*)  FROM $wpdb->options "
    . "WHERE `option_name` ='woocommerce_${gateway_name}_settings' "
    . "AND  `option_value`  LIKE '%\"enabled\";s:3:\"yes\"%'";

  $count = $wpdb->get_var( $query );

  return $count > 0;
}

Esta función dependiendo del contexto, puedes ponerla en el archivo functions.php o en el código de tu plugin. Puedes llamarla en cualquier momento ya que $wpdb se instancia temprano en la carga de WordPress.

¡Listo! Con esto podrás leer directamente desde la base de datos si comprobar si una pasarela pago está activa o desactivada. Sin afectar el funcionamiento de WooCommerce.

Deja un comentario

JS Archive List 5.0

Luego de mas de 3 años sin poder dedicar tiempo a mi primer plugin de WordPress: JS Archive List. Finalmente he conseguido trabajar en él y lanzar una nueva versión. La idea era actualizarlo a las últimas tecnologías, realizar mantenimiento y corrección de errores.

Nuevo nombre: JS Archive List Widget

Ya hoy en día no es necesario usar jQuery debido a que los navegadores ofrecen nativamente las funcionalidades básicas de jQuery. A pesar de que WordPress lo sigue incluyendo y la mayoría de temas y plugines lo cargan (causando una descarga adicional de código) eventualmente se dejará de usar y es mejor estar preparado para ello.

Para preparar el plugin ante este cambio y para actualizarlo a las últimas tecnologías, eliminé jQuery de las dependencias. Esto requirió rescribir todo el código de Javascript a nativo sin dependencias de librerías. Prácticamente es escribirlo de nuevo, es una tarea fácil para el código de interacción con el DOM pero la parte de animaciones si tocó estudiar CSS y ver como aplicar la parte de animaciones usando sólo CSS.

Por esta razón, eliminé jQuery del nombre (que era MUY popular cuando este plugin se lanzó por primera vez) y ahora lo dejé simplemente a JS para indicar que está hecho en Javascript.

Soporte a Gutenberg

Mi objetivo pendiente con este plugin era darle soporte a los bloques, la nueva forma de configurar los widgets y de añadir contenido a WordPress. Por mas que no quieran algunos, el futuro de este CMS consiste en crear contenido a través de bloques de Gutenberg. Tarde o temprano tenía que añadir soporte a esta tecnología.

Para este plugin, debía crear un bloque desde 0 para mostrar el formulario que permite configurar el widget. Luego hacer un adaptador de la configuración de Gutenberg a la que uso internamente (y para mantener retrocompatibilidad) y al momento de generar el código HTML que se carga en el sitio, llamo a la función que genera el HTML del widget.

Fue interesante aprender este proceso de crear bloques. También es raro escribir plugins de WordPress usando React y tecnologías de JS. La ventaja es que los plugines quedan mejor integrados al CMS y creo que permite a los usuarios configurarlos fácilmente.

¿Cómo lo descargo o pruebo?

Si te interesa este plugin, en esta página en el lado izquierdo puedes ver la sección de Archivos. Esta parte se genera con JS Archive List Widget y así es una de las formas que puedes configurar el plugin para mostrar los archivos.

Para descargarlo y usarlo en tu instalación de WordPress, haz clic a continuación y disfruta de ver el listado de tus archivos con JS Archive List Widget.

Ahora tengo que actualizar mi plugin de categorías y evitar que tome 3 años lanzar una nueva versión.

Deja un comentario

Mi análisis sobre Go Subscriptions (Shopify)

Estuve probando Go Subscriptions una aplicación embebida de Shopify que te permite agregar suscripciones a tu tienda. Esto te permite definir productos o servicios que pueden venderse cada cierto tiempo de forma automática. Así tus clientes no tienen que regresar a la tienda para volver a adquirirlos sino que se al finalizar el período se vuelve a cobrar y se envía de nuevo el producto.

Instalación

La instalación depende del tipo de tema que tengas. Go Subscriptions tiene compatibilidad con Online Themes 2.0. Así que con instalar la aplicación y activar el bloque en la configuración del tema estará la listo para usarla Si tienes la versión 1.0. Te aparece una serie de instrucciones sobre donde debes pegar el código de los botones para enlaces o mostrar la información de suscripciones. Tal vez puede ser un poco tedioso pero es lo normal para este tipo de temas.

Para ambos casos, la misma aplicación te informará los pasos requeridos para instalar la aplicación en tu tienda. Si no, puedes usar el soporte técnico para requerir una instalación asistida pero no fue necesario en mi caso.

Administrador de Go Subscriptions

Como administrador puedes hacer todas las operaciones de una orden: pausar, reanudar, cambiar fechas, productos, ítemes, etc. Pero también puedes realizar configuraciones como definir el contenido de los correos, definir las suscripciones: períodos, descuentos, envíos, etc.

Para empezar a usar Go Subscriptions, primordial es crear planes de pago que poseen un período, descuentos, los productos a los que pertenece, entre otros. Luego de crearlos aparecerán en el frontend y el usuario puede seleccionar el producto como suscripción. Posteriormente a medida que van colocando suscripciones, aparecerán en el listado de orden donde puedes controlarlas.

También con la aplicación puedes activar correos con recordatorios de renovación de la suscripción o información adicional. Otras funciones adicionales son controlar la veces que una suscripción debe ocurrir para ser cancelada, el número de re-intentos antes de pausar le suscripción entre otros.

La interfaz es sencilla de usar y con la misma apariencia que la mayoría de las aplicaciones de Shopify. Tiene soporte para español y funciona en dispositivos móviles.

Administrador del Frontend

El administrador para los clientes de la tienda, permite a los usuarios ver las suscripciones realizadas y ejecutar acciones sobre ellas. Las acciones permiten pausar, reanudar, omitir la siguiente orden. Ademas poder cambiar el método de pago, cancelar toda la orden y hacer cobros manuales.

La interfaz es muy sencilla y adaptable a cualquier plantilla que uses. El HTML es sencillo y con pocas reglas de CSS por defecto. Así que para personalizarlo a tu gusto, con un poco de CSS adicionales puedes adaptarlo sin problemas.

Este administrador le da libertad a tus clientes de controlar sus suscripciones.

Conclusión

Si necesitas aumentar tus ventas ofreciendo suscripciones, te recomiendo usar Go Subscriptions. Es una aplicación una aplicación sencilla pero hace todo lo que necesitas. El equipo de soporte responde rápidamente y siempre está dispuesto a ayudarte.

Deja un comentario