Cómo personalizar la verificación de temas para validar temas de WordPress

La seguridad y la coherencia son algunas de las principales preocupaciones que tenemos al usar bibliotecas, marcos y complementos de terceros. Nos enfrentamos al mismo problema al utilizar temas y complementos de WordPress gratuitos y comerciales..

El Códice de WordPress proporciona un conjunto de pautas y reglas para desarrollar temas. Para poder enviar temas al directorio de temas de WordPress, debe cumplir con estas pautas. Pero hay cientos de temas comerciales y gratuitos que podrían no desarrollarse de acuerdo con estas pautas..

Básicamente, tenemos que verificar si un tema coincide al menos con el conjunto dado de pautas y reglas. Theme Check es un complemento gratuito de WordPress desarrollado para validar temas de WordPress.


Puede verificar el tema validar todo?

Definitivamente no puede, al menos, con su funcionalidad predeterminada. Así que aquí vamos a ver cómo podemos usar las comprobaciones existentes, así como agregar nuestras propias reglas para la validación de los temas de WordPress..


Importancia del Plugin Theme Check

Theme Check presenta alrededor de 40 pruebas incorporadas para validar su tema tanto en el panel frontal como en el panel de administración. Básicamente, esas comprobaciones contendrán las validaciones necesarias para evitar problemas de seguridad y comparar las funcionalidades del tema con las pautas de desarrollo del tema.

Como desarrolladores de temas o usuarios de temas de terceros, deberíamos utilizar una herramienta de este tipo para asegurarnos de que nuestros temas cumplen con los estándares.

La mayor importancia del verificador de temas viene con su capacidad para cambiar el comportamiento existente o agregar un nuevo comportamiento a través de complementos conectables. A lo largo de este artículo analizaremos su arquitectura y las posibilidades de extender el complemento para utilizarlo como una biblioteca de comprobación de temas con todas las funciones..


Cómo usar la verificación de temas

Supongo que la mayoría de ustedes ya han utilizado este complemento en sus tareas de desarrollo de WordPress. Aquellos que son nuevos en este complemento pueden obtener una copia del repositorio de complemento de WordPress en http://wordpress.org/extend/plugins/theme-check/.

Una vez instalado y activado, obtendrás un submenú llamado Verificación de tema bajo la Apariencia menú. Allí puede encontrar un cuadro desplegable que contiene todos los temas disponibles en su instalación de WordPress. Puede seleccionar un tema y hacer clic en Revisalo Botón para iniciar la validación del tema. Una vez que se complete el proceso, aparecerá una pantalla como la siguiente.


Asegúrese de habilitar el WP_DEBUG opción en el wp-config.php archivo a CIERTO antes de comenzar a validar temas.

La pantalla de resultados de la verificación de tema contendrá todos los tipos de errores encontrados en su tema en diferentes tipos de error, como RECOMENDADO, NECESARIO, ADVERTENCIA, etc. Tenga en cuenta que todas estas validaciones se realizan según los estándares de revisión de temas de WordPress.

El poder real de Theme Check llega cuando extendemos el complemento con verificaciones de validación personalizadas. Así que vamos a profundizar en el código para descubrir cómo funciona y cómo podemos extenderlo con nuestros propios cheques..


Entendiendo la interfaz de verificación de tema

Theme Check ofrece una interfaz bien definida y simple para crear cheques. Todas las comprobaciones existentes así como las nuevas deben implementarse en esta interfaz para que las cosas funcionen. El siguiente código contenido en el checkbase.php archivo muestra la interfaz común para la verificación de temas.

 // interfaz que todas las comprobaciones deben implementar interfaz themecheck // debe devolver true para buena / aceptable / aceptable, falsa para mala / no-aceptable / inaceptable comprobación de función pública ($ php_files, $ css_files, $ other_files); // debe devolver una serie de cadenas que expliquen los problemas encontrados. public function getError (); 

Básicamente contiene dos funciones para verificar el tema y proporcionar errores. Todo el contenido del archivo de su tema se comprimirá en tres variables principales como cadenas. Estas variables se pasan luego a la función de verificación de cada clase de verificación mediante el complemento.

Dentro de comprobar función tenemos que implementar las validaciones y devolver errores si la comprobación se completa como un error. Entonces el getError Se llamará a la función para agregar los mensajes de error a la página de resultados de la verificación del tema..


Introducción al proceso de verificación de temas

Creo que es importante comprender el proceso de inicialización de la verificación de temas para saber cómo funciona y las secciones importantes en las que debemos enfocarnos, antes de extender la funcionalidad del complemento..

Una vez que seleccionamos el tema y hacemos clic en el botón 'Comprobar', el complemento buscará todos los archivos en el tema seleccionado usando el PHP RecursiveDirectoryIterator y asigna todo el contenido de esos archivos a una variable de cadena.

Luego, el contenido del archivo se dividirá en tres variables, una para cada uno de los archivos PHP, CSS y otros archivos. Luego comienza el proceso de ejecución de las comprobaciones de temas, que será la parte más importante para nosotros como desarrolladores..

Considere el siguiente código para el proceso de ejecución inicial después de cargar las variables de archivo.

 // cargar todos los cheques en el directorio de cheques $ dir = 'cheques'; foreach (glob (dirname (__ FILE__). "/$dir/*.php") como $ archivo) incluye $ archivo;  do_action ('themecheck_checks_loaded'); function run_themechecks ($ php, $ css, $ other) global $ themechecks; $ pass = true; foreach ($ themechecks as $ check) if ($ check instanceof themecheck) $ pass = $ pass & $ check-> check ($ php, $ css, $ other);  devolver $ pass; 

Explicación del Código

  • Todas las comprobaciones de temas se almacenan en el cheques El directorio del complemento y cada uno de ellos se incluye al buscar los archivos PHP en el directorio..
  • Una vez que se cargan todas las comprobaciones de temas, el complemento ejecuta una acción personalizada llamada themecheck_checks_loaded. Esta acción actúa como la parte más importante en el proceso de extensión..
  • Entonces el sistema comienza a ejecutar las comprobaciones de temas a través de run_themechecks Función, que toma archivos PHP, archivos CSS y otros archivos como variables.
  • Finalmente, la función de verificación de cada uno de los temas se carga en el global $ chequeos Variable que se ejecutará para completar el proceso de verificación..

Personalizando cheques de tema existentes

La mayoría de las comprobaciones de temas se basan en expresiones regulares coincidentes o en posiciones específicas coincidentes en cadenas. Nuestro primer requisito es averiguar cómo podemos modificar el comportamiento de los controles existentes. Así que echemos un vistazo a la IncludeCheck clase, que valida cómo deben incluirse los archivos en un tema.

 La clase IncludeCheck implementa themecheck protected $ error = array (); verificación de funciones ($ php_files, $ css_files, $ other_files) $ ret = true; $ cheques = array ('/ (? __ ('Parece que el tema usa incluir o requerir. Si se están usando para incluir secciones separadas de una plantilla de archivos independientes, entonces get_template_part () debe utilizarse en su lugar. ',' themecheck ')); foreach ($ php_files as $ php_key => $ phpfile) foreach ($ cheques como $ key => $ check) checkcount (); if (preg_match ($ key, $ phpfile, $ matches)) $ filename = tc_filename ($ php_key); $ error = '/ (?error [] = sprintf (__ ('INFO: % 1 $ s % 2 $ s% 3 $ s ',' themecheck '), $ filename, $ check, $ grep);  devolver $ ret;  función getError () return $ this-> error;  $ themechecks [] = new IncludeCheck;

Explicación del Código

  • Todas las comprobaciones de temas tienen una matriz protegida para almacenar errores.
  • Dentro de la función de verificación, podemos incluir cualquier número de controles en una matriz. Aquí solo tenemos un cheque.
  • La mayoría de las comprobaciones de temas se ejecutarán haciendo coincidir las expresiones regulares y, por lo tanto, las claves para la matriz de comprobaciones serán expresiones regulares. El valor de la clave respectiva debe contener el mensaje de error que se mostrará en el caso de fallas.
  • Luego, tenemos que elegir un tipo específico de archivo y recorrer cada comprobación en la matriz mientras se actualiza el archivo global. cuenta de cheques variable.
  • A continuación, realizamos la coincidencia de expresiones regulares y asignamos los errores a la matriz de errores globales en caso de fallas.
  • Luego devolvemos el estado del cheque como un éxito o un fracaso. Dependiendo del estado, el complemento capturará los errores necesarios que se mostrarán en la página de resultados.
  • Finalmente, inicializamos el objeto de la clase de verificación de tema y lo asignamos a la global $ chequeos matriz al final del archivo.

Suponga que desea mejorar una verificación de tema existente agregando nuevas reglas o modificando las existentes. Todo lo que tiene que hacer es agregar un nuevo elemento o cambiar las expresiones regulares de los elementos existentes en la matriz de cheques.

Ahora debe tener una comprensión clara de cómo funcionan las comprobaciones de temas y cómo se generan los errores en los fallos. Pasemos a la parte más importante de crear nuestras propias comprobaciones personalizadas sin afectar el complemento del núcleo.


Ampliación de la verificación de temas con el complemento enchufable

Crear nuevas comprobaciones de temas puede ser tan simple como implementar la interfaz con una nueva clase de verificación de temas y colocar los archivos dentro del directorio de comprobaciones del complemento. Pero cambiar la funcionalidad principal no es un método recomendado, ya que siempre perderá sus archivos en las actualizaciones de los complementos..

La mejor práctica es extender los complementos usando opciones posibles sin afectar el código del núcleo. Los desarrolladores de Theme Check han habilitado la opción de extender la funcionalidad usando un gancho de acción llamado themecheck_checks_loaded.

Este gancho de acción se ejecutará después de que se hayan cargado todas las comprobaciones de temas. Por lo tanto, tendremos acceso a la variable de verificación de tema global dentro de los complementos conectables. Ahora es el momento de comenzar creando un complemento personalizado..


Eliminar cheques existentes

A veces es posible que tengamos que deshabilitar algunas comprobaciones de temas para cumplir con los requisitos de nuestros propios temas. Debe eliminar el archivo o comentar el código de inicialización para deshabilitarlos en un escenario normal. Pero con el poder de un complemento enchufable, podemos habilitarlos o deshabilitarlos en cualquier momento sin afectar el núcleo. Veamos cómo podemos deshabilitar la verificación de temas usando un plugin..

 function custom_themecheck_checks_loaded () global $ themechecks; $ checks_to_disable = array ("Desaprobado", "Screenshot_Checks"); foreach ($ themechecks como $ keyindex => $ check) if ($ check instanceof themecheck) $ check_class = get_class ($ check); if (in_array ($ check_class, $ checks_to_disable)) unset ($ themechecks [$ keyindex]);  add_action ('themecheck_checks_loaded', 'custom_themecheck_checks_loaded');

Podemos implementar el themecheck_checks_loaded Acción del plugin Theme Check, dentro de nuestros propios plugins. Allí tenemos acceso a todas las comprobaciones de temas cargados. Podemos definir una matriz para que contenga los nombres de clase de las comprobaciones de temas que deseamos deshabilitar. Finalmente, desarmamos las comprobaciones contenidas en la matriz deshabilitada y la comprobación del tema se ejecutará sin estas validaciones.

Se nos permite modificar fácilmente las comprobaciones de temas existentes utilizando nuestro propio complemento. Implementar una verificación de temas desde cero es la intención principal de este tutorial. Así que vamos a ver cómo podemos crear una nueva comprobación de tema.


Creación de nuevos cheques de tema

Puede haber cientos de escenarios para implementar verificaciones de temas personalizados. Validar los ganchos de acción personalizados es uno de mis favoritos y usaré el código para explicaciones..

Básicamente, me gustaría tener ciertos enlaces de acción personalizados en mis temas para agregar nuevas funcionalidades. El tema temático es un buen ejemplo para el uso efectivo de ganchos de acción personalizados en temas. Comencemos a implementar una verificación de tema personalizada..

Dentro de la carpeta de complementos personalizados, cree una nueva clase de PHP e implemente la interfaz con los detalles descritos en las secciones anteriores. La forma más sencilla es copiar una verificación de tema existente y cambiar la función de verificación y la inicialización. Considere el siguiente código para la implementación de verificación de enlaces de acción personalizados.

  __( 'Ver: ',' themecheck '),' do_action \ (\ s? ("| \ ') sample_action2 (" | \') \ s? \) '=> __ (' See: ',' themecheck ')); foreach ($ cheques como $ clave => $ cheque) cheque cuenta (); if (! preg_match ('/'. $ key. '/ i', $ php)) if ($ key === 'do_action \ (\ s? ("| \') sample_action1 (" | \ ') \ s? \) ') $ key = __ (' do_action (\ 'sample_action1 \') ',' themechek ');  if ($ key === 'do_action \ (\ s? ("| \') sample_action2 (" | \ ') \ s? \)') $ key = __ ('do_action (\' sample_action2 \ ') ',' themechek ');  $ key = ltrim (trim (trim ($ key, '('), '\\')); $ this-> error [] = sprintf (__ ('NECESARIO: No pudo encontrar % 1 $ s. % 2 $ s ',' themecheck '), $ key, $ check); $ ret = falso;  devolver $ ret;  función getError () return $ this-> error;  $ themechecks [] = new CustomActions; ?>

En esta comprobación personalizada, he incluido expresiones regulares para validar dos enlaces de acción personalizados llamados sample_action1 y sample_action2. Después de encontrar una coincidencia, definimos una clave fácil de usar para que se muestre al usuario en lugar de las expresiones regulares originales. Si lo compara con los controles existentes, notará que las expresiones regulares y los mensajes de la función de control son las únicas cosas que se han modificado..

Finalmente, podemos agregar nuevos controles usando otra implementación de la acción como se muestra en el siguiente código.

 función custom_new_themecheck_loadeder () global $ themechecks; include_once 'custom_actions.php';  add_action ('themecheck_checks_loaded', 'custom_new_themecheck_loadeder');

Ahora puede integrar sus propios controles de tema en el complemento Theme Check.


Cuándo usar la verificación de temas

Theme Check está desarrollado para validar temas en comparación con las pautas de desarrollo de temas de WordPress. Por lo tanto, se centrará principalmente en cuestiones de seguridad y en mantener un formato y características consistentes..

Podemos usar este complemento desde una perspectiva diferente para agregar características como se muestra en la sección anterior. Si eres un experto en expresiones regulares, es posible crear una comprobación de temas avanzada con esta increíble herramienta..

Depende de usted decidir cuándo usar los controles de temas personalizados. Por supuesto, esto es más importante para los desarrolladores de temas que para los usuarios de temas de WordPress..

Puedo pensar en dos escenarios principales donde las comprobaciones de temas personalizados pueden ser útiles.

Mantener un marco básico

No creo que ningún desarrollador desarrolle cada tema de WordPress desde cero. La mayoría de los desarrolladores mantienen su propio marco de tema básico y construyen varios diseños además de eso.

Por lo tanto, las verificaciones de temas personalizados serán muy útiles para mantener la coherencia de un marco básico en todos los temas. Puede validar cosas como formatos de imagen, tamaños, códigos cortos, acciones, etc. dentro de su propio marco.

Desarrollando temas más allá de los blogs

En general, la mayoría de los temas de WordPress están diseñados para adaptarse a un tipo de tema de blogging. WordPress ofrece ganchos de acción incorporados para las funciones del blog y, por lo tanto, no tendremos dificultades para extenderlos.

Sin embargo, puede haber escenarios donde se desarrollen temas para aplicaciones como sitios de publicación de trabajos, carritos de compras, sistemas de gestión de eventos, etc. Estos temas tienen secciones y características completamente diferentes en comparación con los blogs. WordPress no ofrece funciones integradas para tales temas. Por lo tanto, sería una buena idea implementar ganchos de acción dentro de dichos temas y validarlos utilizando la Verificación de tema..


Conclusión

Espero que hayas aprendido la importancia de Theme Check y cómo podemos usarlo para mantener la coherencia en todos nuestros temas..

Me gustaría saber si ha utilizado este complemento y qué tipo de verificaciones de temas personalizados ha implementado para ampliar sus funciones..

Siéntase libre de compartir sus sugerencias y preguntas en la sección de comentarios a continuación.