Saltar al contenido

Categoría: Wordpress

Liberado jQuery Archive List 4.0

Luego de 3 años y medio sin realizar ningún desarrollo en mi primer plugin de WordPress: jQuery Archive List (además de cumplir exactamente 8 años de crearlo). Pude conseguir un tiempo para actualizarlo e incluir funcionalidades pendientes.

Lo primero en hacer fue reescribir el código siguiendo las convenciones de código de WordPress. Durante este procesó note código adaptado a versiones viejas de PHP (cuando lo escribí inicialmente PHP 5.2 era la versión mas usada). Otras partes tenían código que hoy me daba risa lo ilegible o ineficiente. También habían cosas que había escrito y ahora WordPress incluye funciones para realizar esas tareas. Otras funciones fueron marcadas como obsoletas o inseguras y tocaba usar la forma correcta.

Fue una gran experiencia arreglar mi propio código. Ver como he crecido todos estos años profesionalmente, los cambios en la tecnología y como va madurando el software con los años.

En fin espero que disfruten jQuery Archive List, gracias a desarrollar este plugin pude conseguir los clientes mas importantes en mi carrera. Recibí buenas donaciones durante los inicios y me ayudó a mantenerme un poco. Además, que me ayudó a darme conocer en la comunidad de WordPress y crecer como profesional.

Deja un comentario

Copiar la configuración del tema padre al tema hijo (o cualquier tema) en WordPress

Cuando necesitas modificar la plantilla de una instalación de WordPress, la forma correcta de hacerlo es mediante un tema hijo. De esta manera puedes realizar modificaciones solo a los archivos que necesites y es mas fácil llevar los cambios; si actualizas no perderás nada pues solo los archivos del «tema padre» se sobrescribe y no tus cambios.

La configuración de tema hijo

WordPress guarda la configuración del tema (incluyendo datos de los widgets y su posición en las barras laterales) en la base de datos. Al momento de almacenarlo utiliza el nombre de la carpeta del tema como identificador esto ocasiona la pérdida de la configuración si el nombre de la carpeta cambia por:

  • Agregaron el número de la versión del tema al nombre de la carpeta y el mismo es distinto en una versión superior.
  • Se crea un tema hijo que obviamente tendrá otro nombre.

Algunos temas posee una configuración compleja o tal vez en algunos sitios tienes una configuración de widgets muy larga como para recrearla. Por ello puedes automatizar este proceso utilizando la herramienta WP-CLI que te permite realizar tareas desde la consola.

Migrar la configuración

Asumiendo que el tema padre se encuentra en la carpeta llamada tema_padre y el hijo en la carpeta tema_hijo el comando a ejecutar sería:

wp option get tema_padre --format=json > tema_hijo_settings.txt

wp option update tema_hijo "`cat tema_hijo_settings.txt`" --format=json

¡Listo! Al refrescar verás como la configuración del tema fue actualizada correctamente.

Espero que te sirva de gran utilidad y recuerda compartir esta información si te fue útil.

Deja un comentario

SQL para migrar la configuración del tema en WordPress

Desde hace unas versiones WordPress ofrece Customizer, una herramienta para pre-visualizar y configurar un tema en tiempo real. Si se te ha perdido la configuración, esta entrada te explicará como migrar la configuración del tema desde la base de datos. ¿Por qué hacerlo por base de datos y no por un plugin? Pues existen escenarios donde no puedes recrear la configuración manualmente:

  • Vas a lanzar un nuevo tema hijo a producción. No puedes perder tiempo en mostrar un sitio mal configurado a las personas.
  • El tema posee una configuración muy compleja o  grande. Tomando mucho tiempo en recrear la visualización del sitio.
  • El tema esta codificado en otro idioma (escenario que me inspiró esta entrada) y no entiendes la configuración seleccionada.

¿Por qué se pierde la configuración del tema?

Esta configuración se guarda en la base de datos asociada al tema, ocasionando que si cambias a una plantilla hija o una copia de la misma, todas las personalizaciones se pierden. Inclusive, algunos desarrolladores comenten el error de colocar la versión a la carpeta del tema y al cambiar la versión, se pierden los datos de personalización.

SQL para  migrar la configuración del tema en WordPress

La configuración del tema se guarda en la tabla wp_options bajo el nombre de theme_mods_NOMBRE_CARPETA_DEL_TEMA. Por ejemplo, si tienes activado el tema twentynineteen, los ajustes del tema estarán bajo el nombre theme_mods_twentynineteen.

Para migrar la configuración, del tema cuyo nombre de carpeta en /wp-content/themes/ se llame original a un nuevo tema (hijo o con otro nombre) llamado nuevo solo debes ejecutar esta sentencia:

INSERT `wp_options` (option_name, option_value) 
VALUES (
  'theme_mods_nuevo',
  (
    SELECT `option_value` FROM `wp_options` 
    WHERE `option_name`='template_mods_original'
  )
);

¡Listo! Ya con estos pasos deberías tener la misma configuración del tema padre (u otro tema si es compatible) con la plantilla cuyo nombre es nuevo (recuerda cambiarlo por el nombre de tu tema). De esta forma ahorras tiempo en recrear toda la configuración automáticamente y luego activar el tema. No perderás tiempo configurando cosas o renombrando carpetas.

Espero que les sirva este comando SQL y recuerda comentar si conoces un mejor método o como optimizar este. ¡Feliz desarrollo!

Deja un comentario

Carga los productos de una orden en WooCommerce

WooCommerce es una excelente solución para crear tu propia tienda en línea. Al ser un plugin de WordPress permite aprovechar todo lo disponible para esta tecnología. Cada nueva versión incluye mejoras significantes pero sacrificando muchas veces compatibilidad hacia atrás. Hace unos meses salió la versión 3.0 que introdujo varias mejoras y cambios en el SDK. Uno de mis plugins estuvo funcionando mal con los productos variables, pues la forma de obtener los productos de una orden habían cambiado. A continuación te explico como carga los productos de una orden.

Carga de productos de una orden

El problema es que en WooCoommerce existen varios tipos de productos: simple, variable, virtual, etc. Cada uno de ellos es definido en su propia clase, entonces cuando cargas una orden en WooCommerce desde el SDK solo tienes acceso al ID. Luego poder detectar con ese ID el tipo de producto y cargar su respectivo objeto puede ser tedioso.

El primer paso es obtener los objetos que representan los productos de la orden. No se debe confundir con el producto como tal, pues estos tienen un precio y atributos únicos para la orden.  Luego de cargar estos productos, si procedemos a cargar la instancia de su respectiva clase que nos dará toda la información.

WooCommerce nos ofrece la función get_product() que dando un ID, se carga automáticamente el producto como un objeto de su respectiva clase. Permitiendo acceder y manipular la data de muchas formas.

$order = wc_get_order( $order_id );
$line_items = $original_order->get_items();

foreach ( $line_items as $item_id => $item ) {
  $wc_product = $item->get_product();
  ....
}

Y listo, ya con esto puedes obtener un objeto que representa al producto de un orden.

Deja un comentario