Como diseñadores web, va en contra de nuestra naturaleza restringir el acceso a nuestro código. Nos enseñan a maximizar la compatibilidad de nuestros sitios web y a esforzarnos por la compatibilidad con versiones anteriores siempre que sea posible; para crear sitios progresivamente mejorados y degradantes. Si podemos hacer que funcione en IE1, eso no es malo ...

El problema, al menos para los desarrolladores de WordPress, es que WordPress es un monstruo; te tragará a ti y a tu pequeño proyecto entero si lo dejas.

Cuando está produciendo un tema de WordPress, ya sea como un trabajo personalizado para un cliente específico, o para revenderlo en uno de los muchos mercados de WordPress, su objetivo nunca será cubrir todo lo que alguna vez ha sido parte de WordPress. En cambio, su objetivo debe ser utilizar las funciones clave, las características y los filtros de la mejor manera posible para maximizar la base de código actual.

Como profesional, su tiempo es dinero, mientras más tiempo pase en su desarrollo, menos ganancias obtendrá; es una ecuación simple El tamaño de WordPress significa que puede gastar fácilmente el 80% de su tiempo atendiendo al 20% del mercado. Mucho mejor es pasar el 80% del tiempo atendiendo al 80% del mercado. En términos de producto de calidad y su propio saldo bancario, es el enfoque más seguro.

En 14 funciones clave de WordPress para impulsar el desarrollo de temas revisamos algunas de las funciones que, sin excepción, incluí en las funciones de mi tema de inicio.php. En este artículo, cubrimos otra función crucial que debe ir en su lista de funciones clave de WordPress. Te salvará tanto la cabeza como el corazón, dolores en el camino.

WordPress ya limita la compatibilidad con versiones anteriores

Cuando un exploit evitable pone de rodillas el sitio de su cliente (que se ejecuta en su tema), ¿a quién cree que llamará? Déjame ahorrarte las conjeturas: ¿eres tú, m'kay? No importa que lo que sea que esté causando el problema no sea culpa tuya, para el cliente, solo importa que seas el vínculo más cercano al posible problema. Lo último que recuerdan es contratarte para crear un nuevo tema para ellos.

Si después de la inspección encuentra que el sitio del cliente aún se ejecuta en WordPress anterior a la versión estable actual, tómese unos segundos y golpéese la mejilla izquierda primero, luego la mejilla derecha. ¡Tu tema no debería permitirles hacer eso!

Si ha estado prestando atención, a partir de la Versión 3.6 de WordPress, habrá empezado a notar una función bastante alta en las funciones del tema predeterminado.php que restringió el uso del tema predeterminado a versiones de WP más recientes que 3.6. De hecho, es la segunda función definida en Twenty Fourteen's functions.php !

Esa función se ve así:

/*** Twenty Fourteen only works in WordPress 3.6 or later.*/if ( version_compare( $GLOBALS['wp_version'], '3.6', '<' ) ) {require get_template_directory() . '/inc/back-compat.php';}

Nos interesan los contenidos de ese archivo back-compat.php . Las funciones definidas allí son lo que buscamos para usar con nuestros propios temas.

No hay país para el viejo WordPress

Casi no importa qué funciones está implementando, pero si es posible, limite el uso de sus temas a versiones razonablemente nuevas de WordPress. Esto garantizará que el usuario final actualice su instalación (lo mejor para ellos en términos de seguridad) y se asegurará de que dedique la mayor parte del tiempo de desarrollo a la mayoría de los usuarios.

Definiendo la función

Para lograr esto, usamos la función PHP version_compare () para verificar la versión de WordPress instalada actualmente con la última versión disponible, asegurándonos de que la última versión instalada no sea inferior a 3.6: haga su propia selección de la versión que debe probar, 3.6 no es una recomendación, solo un ejemplo. Esa función se ve así:

if ( version_compare( $GLOBALS['wp_version'], '3.6', '<' ) ) {// do (or do not) somethingfunction butter_never_get_old() {switch_theme( WP_DEFAULT_THEME, WP_DEFAULT_THEME );unset( $_GET['activated'] );add_action( 'admin_notices', 'butter_step_your_game_up' ); // we add some admin notices here (we haven't defined this function yet)}add_action( 'after_switch_theme', 'butter_never_get_old' );}

Lo que hace esta función es definir una función de acción butter_never_get_old () que solo se ejecutará cuando se llame a la función core after_switch_theme () . Hasta ahora, la función butter_never_get_old () , que se encuentra dentro de nuestra verificación de versión, hace lo siguiente:

  1. Comprueba qué versión de WordPress está actualmente instalada
  2. Se asegura de que la versión sea más nueva que la versión 3.6
  3. Ejecuta el If / Else cósmicamente relevante:
  4. Si lo es: activa el tema.
  5. Si no es así: no active el tema. En su lugar, vuelva a activar el tema predeterminado y, para ser agradable, emita un pequeño mensaje que indique al usuario que actualice su instalación ridículamente vieja. Vamos, abuelo!

¡Empujad, empujad! Actualizar que s #% *

A continuación, debemos definir la función butter_step_your_game_up () que imprime nuestros avisos de administrador si algo sale mal, lo que significaría ostensiblemente que la versión de WP es más antigua de lo que nos gustaría.

function butter_step_your_game_up() {$update_message = sprintf( __( 'This theme requires WordPress version 3.6 or newer. You're currently using version %s. Please upgrade.', 'butter' ), $GLOBALS['wp_version'] );printf( '

%s

', $update_message );}

La función anterior de butter_step_your_game_up () establece nuestra cadena traducible del mensaje de error en la variable $ update_message como se define (este tema requiere ... etc.) que luego se imprime y muestra al usuario (desde dentro de la función butter_never_get_old () definida anteriormente) y visualmente, dentro un div con clase de 'error'. Este mensaje, a continuación, puede estilo como desee.

Entonces, dicho todo, nuestra función debería verse así:

if ( version_compare( $GLOBALS['wp_version'], '3.6', '<' ) ) {// This function deactivates our newly activated theme if WP isn't newer than 3.6// It then re/activates the default themefunction butter_never_get_old() {switch_theme( WP_DEFAULT_THEME, WP_DEFAULT_THEME );unset( $_GET['activated'] );add_action( 'admin_notices', 'butter_step_your_game_up' );}add_action( 'after_switch_theme', 'butter_never_get_old' );// This function, called from within the above function// outputs the relevant message that nudges the theme's user// to upgradefunction butter_step_your_game_up() {$update_message = sprintf( __( 'This theme requires WordPress version 3.6 or newer. You are currently using version %s. Please upgrade!', 'butter' ), $GLOBALS['wp_version'] );printf( '

%s

', $update_message );} }

Con eso en su lugar, se asegura de que su tema no se pueda activar en instalaciones de WordPress anteriores a la versión 3.6.

Mantenlo limpio

En la medida de lo posible, debes mantener limpia tu function.php . Debe estar limpio en el sentido de que debe ser capaz de escanear rápidamente e inmediatamente discernir qué está haciendo cada función. Para ese fin, es posible que deseemos mover nuestra función a una carpeta de inclusión.

Si aún no lo has hecho, crea una carpeta y llámala 'inc' dentro del directorio de tu tema. Dentro de eso, crea un archivo php y llama a back-compat.php . Copie y pegue los contenidos de la función que acabamos de crear, dejando solo el version_compare () en functions.php:

if ( version_compare( $GLOBALS['wp_version'], '3.6', '<' ) ) {require get_template_directory() . '/inc/back-compat.php';}

Dentro del archivo /inc/back-compat.php , pegue las funciones que definimos anteriormente:

function butter_never_get_old() {switch_theme( WP_DEFAULT_THEME, WP_DEFAULT_THEME );unset( $_GET['activated'] );add_action( 'admin_notices', 'butter_step_your_game_up' );}add_action( 'after_switch_theme', 'butter_never_get_old' );function butter_step_your_game_up() {$update_message = sprintf( __( 'This theme requires WordPress version 3.6 or newer. You are currently using version %s. Please upgrade!', 'butter' ), $GLOBALS['wp_version'] );printf( '

%s

', $update_message );}

Conclusión

Siempre es difícil venderle a un buen desarrollador que tienen que limitar la compatibilidad de su código. Pero el gran tamaño de la base de código de WordPress, especialmente cuando te enfocas en la compatibilidad con versiones anteriores, hace que la limitación del alcance de tu tema sea una necesidad práctica. WordPress ellos mismos deben resaltar su validez.

Y ahora, liberado de los constantes obstáculos que presenta el código desactualizado, puedes enfocar tus energías a donde pertenecen: aprovechando el increíble poder de WordPress.

Imagen / miniatura destacada, usos imagen de compatibilidad a través de Shutterstock.