Los espacios de nombres y la carga automática no son temas que generalmente se tratan cuando se trata de trabajar con los complementos de WordPress.
Parte de esto tiene que ver con la comunidad que lo rodea, parte de esto tiene que ver con las versiones de PHP que admite WordPress, y parte de esto simplemente tiene que ver con el hecho de que no hay mucha gente que hable sobre ello..
Y eso está bien, hasta cierto punto..
Ni los espacios de nombres ni la carga automática son temas que necesita utilizar para crear complementos. Sin embargo, pueden proporcionar una mejor manera de organizar y estructurar su código, así como reducir el número de exigir
, requerir una vez
, incluir
, o include_once
declaraciones que usan tus plugins.
En esta serie, analizaremos exactamente qué son los espacios de nombres de PHP, por qué son beneficiosos y cómo usarlos. Luego, veremos cómo utilizar los autocargadores para cargar automáticamente los archivos que necesitamos sin tener que cargarlos manualmente en nuestro código..
Para empezar, necesitarás las siguientes herramientas:
Una vez que tenga todo eso en su lugar, comencemos a construir un complemento. Tenga en cuenta que si algo de lo anterior le parece nuevo, no dude en revisar cualquiera de mis tutoriales anteriores en mi página de perfil.
Además, puedes seguirme en mi blog y / o Twitter en @tommcfarlin, donde hablo sobre el desarrollo de software en el contexto de WordPress..
Dicho esto, vamos a empezar.
En esta serie, vamos a crear un complemento simple principalmente para demostrar cómo funcionan los espacios de nombres y la carga automática en PHP. Pero para hacer eso, siempre ayuda aplicar los conceptos de una manera práctica..
Con ese fin, estaremos creando un complemento que facilita la carga de hojas de estilo y estilos de JavaScript en nuestro complemento, y que muestra un cuadro de meta que le pide al usuario una pregunta para ayudarlo a intercambiar ideas sobre qué bloguear..
No, esto no es algo que probablemente envíes al Repositorio de complementos de WordPress, ni es algo que probablemente uses fuera de esta demostración en particular. Pero recuerde, el propósito de esta serie es demostrar cómo funcionan los espacios de nombres y la carga automática..
Y es a través de este ejemplo que vamos a hacer precisamente eso..
Si has seguido alguno de mis tutoriales anteriores, entonces sabes que una de las cosas que me gusta hacer es planificar lo que vamos a construir antes de escribir cualquier código. Entonces, para la primera versión de este complemento, esto es lo que sabemos que vamos a necesitar:
Parece sencillo, ¿verdad? Si no, no te preocupes. Voy a guiarte a través de todo el proceso con código, comentarios, capturas de pantalla y explicaciones..
Empecemos.
Desde el principio, sabemos que vamos a necesitar un archivo que sirva como bootstrap para el complemento. También sabemos que vamos a necesitar un directorio para la funcionalidad administrativa..
Sigamos adelante y creamos eso ahora:
Obviamente, tenemos un solo archivo vacío y un directorio de administración. Continuemos y configuremos este complemento para que aparezca en el contexto de la pantalla de activación del complemento de WordPress.
Para hacer esto, necesitamos agregar el siguiente bloque de código en la parte superior del archivo de complemento:
Luego, cuando navegue a la página de complementos de WordPress en el área de administración, debería verla aparecer en su lista de complementos. Si opta por activarlo, no ocurrirá nada ya que no hemos escrito ningún código..
En este punto, podemos seguir adelante y comenzar a definir la clase que representará nuestro cuadro de meta en el Añadir nueva publicación página.
Añadiendo un Meta Box
Esta parte del tutorial supondrá que estás versado en la creación de meta box. Si no, no dude en revisar los conceptos de esta serie y luego vuelva a esta parte una vez hecho.
Primero, vamos a crear un archivo llamado
class-meta-box-display.php
en eladministración
Directorio de nuestro plugin. El código debe incluir lo siguiente. Asegúrese de revisar los comentarios para asegurarse de que comprende todo lo que esta clase es responsable de hacer.A partir del código anterior, debe poder asegurarse de que esta clase será responsable de mostrar el contenido dentro de la caja de meta. Por ahora, sin embargo, simplemente hacemos que se haga eco de una declaración para la vista.
Vamos a cambiar esto más adelante en el tutorial..
A continuación, necesitamos introducir una clase que represente el meta box en sí. Así que crea un
class-meta-box.php
archivo en eladministración
Directorio de nuestro plugin. Aquí está el código para hacer exactamente eso. Nuevamente, revise el código y luego explicaré lo que sucede debajo de la clase:display = $ display; / ** * Registra este meta box con WordPress. * * Define una meta casilla que mostrará preguntas inspiradoras en la parte superior * de la barra lateral de la página 'Agregar nueva publicación' para ayudar a los bloggers con algo sobre qué escribir cuando comiencen a redactar una publicación. * / public function init () add_meta_box ('tutsplus-post-questions', 'Inspiration Questions', array ($ this-> display, 'render'), 'post', 'side', 'high');Esta clase mantiene un único atributo que es una referencia a su visualización. Esto significa que esta clase es responsable de definir el cuadro de meta (que, a su vez, llama al objeto de visualización para mostrar el mensaje).
La pantalla se mantiene como un conjunto de propiedades privadas en el constructor. La caja meta no está definida hasta que la
en eso
Se llama al método (que veremos en el programa de arranque del complemento más adelante en el tutorial).En este punto, tenemos todo lo que necesitamos para mostrar un meta box rudimentario en el Añadir nueva página de publicación. Pero primero, necesitamos configurar el bootstrap de nuestro plugin..
En tutoriales anteriores, he hecho esto mucho, así que voy a incluir sólo el código que se requiere (ya que he definido el encabezado anterior). He añadido comentarios, pero también me aseguraré de explicar lo que sucede después del código.
Esto es específicamente relevante porque nuestro cargador automático eventualmente anulará la necesidad de algo de lo que vas a ver.
en eso();Primero, nos aseguramos de que no se pueda acceder directamente a este archivo y solo WordPress lo puede ejecutar..
Luego, nosotros
include_once
Las clases que hemos creado hasta ahora. A continuación, instanciamosMeta_Box
y pasarle una instancia de laMeta_Box_Display
en su constructor.Finalmente, llamamos al
en eso
método que reside en elMeta_Box
clase.Suponiendo que todo vaya bien, deberíamos poder activar el complemento y ver el cuadro de meta en una Añadir nueva publicación página (o, realmente, una Actualizar publicación página, también).
En este punto, tenemos un complemento que funciona, pero en realidad no hace nada más que crear un meta box y mostrar una cadena de texto.
Vamos a al menos haz que muestre algunas citas inspiradoras y muestre una al azar cada vez que se carga la página.
Visualización de citas de inspiración
Primero, necesitamos encontrar un archivo de texto de citas de inspiración. Afortunadamente, Internet proporciona una gran cantidad de estos que podemos utilizar en nuestro proyecto (y están disponibles gratuitamente). Para ello, he creado un
datos
subdirectorio enadministración
que estoy usando para alojar mipreguntas.txt
expediente.A continuación, vamos a necesitar crear una clase que:
- Abre el archivo.
- Leer una línea al azar en una cadena.
- Cierra el archivo.
- Devolver la cadena a la persona que llama.
Sigamos adelante y creamos esa clase ahora. Debido a que esta es una utilidad y se utilizará en el lado administrativo del complemento, vamos a crear un
util
subdirectorio enadministración
. A continuación, vamos a crear un archivo llamadoclase-pregunta-lector.php
.Especificaremos el código para esta clase en un momento, pero volveremos al archivo de inicio del plugin y recuerde incluir el archivo. El código resultante debería verse así:
Como puede ver, la cantidad de archivos que tenemos que incluir manualmente aumenta. ¡Imagínate si estuviéramos trabajando en un plugin grande! Sin embargo, volveremos a esto más adelante en la serie..
Por ahora, volvamos nuestra atención al lector de preguntas. El código para la clase debe verse así:
abierto ($ nombre de archivo); $ question = $ this-> get_random_question ($ file_handle, $ filename); $ this-> close ($ file_handle); devuelve $ pregunta; / ** * Abre el archivo para lectura y devuelve el recurso al archivo. * * @access private * @param string $ filename La ruta al archivo que contiene la pregunta. * @return resource Un recurso para el archivo. * / función privada abierta ($ nombre de archivo) return fopen ($ nombre de archivo, 'r'); / ** * Cierra el archivo que fue leído. * * @access private * @param string $ file_handle El recurso al archivo que se leyó. * / private function close ($ file_handle) fclose ($ file_handle); / ** * Abre el archivo para lectura y devuelve el recurso al archivo. * * @access private * @param string $ file_handle El recurso al archivo que se leyó. * @param string $ nombre_archivo La ruta al archivo que contiene la pregunta. * @return string $ question La pregunta para mostrar en el cuadro de meta. * / función privada get_random_question ($ file_handle, $ filename) $ questions = fread ($ file_handle, filesize ($ filename)); $ preguntas = explotar ("\ n", $ preguntas); // Busque una pregunta hasta que ya no se devuelva una cadena vacía. $ pregunta = $ preguntas [rand (0, 75)]; while (vacío ($ pregunta)) $ pregunta = $ preguntas [rand (0, 75)]; devolver $ pregunta;Tenga en cuenta que el código para esto es relativamente sencillo, pero si no está familiarizado con algunas de las operaciones básicas de archivos en PHP, esto es lo que estamos haciendo:
- Estamos abriendo el archivo usando
Fopen
, Lo que nos otorgará un recurso para leer el archivo..- A continuación, leemos el contenido del archivo y luego tomamos cada línea del archivo y lo escribimos en un índice de una matriz.
- Después de eso, seleccionamos un número aleatorio de la serie de preguntas y lo devolvemos al método que lo está llamando. Si devuelve una cadena vacía, miramos de nuevo hasta que se localiza una pregunta.
- Luego, cerramos el recurso al archivo..
En última instancia, para usar esta clase, simplemente necesita crear una instancia, conocer la ruta de acceso a un archivo lleno de preguntas y luego llamar al
get_question_from_file
método.Nota: Esta clase hace no hacer cualquier manejo de errores. Esa es una práctica estándar cuando se trabaja con archivos. Por ejemplo, ¿qué debemos hacer si el archivo no existe? ¿Qué debemos hacer si no está formateado correctamente o qué sucede si no cerramos el recurso??
Todas estas son buenas preguntas, pero están fuera del alcance de este tutorial. Toda esta información se puede encontrar en el manual de PHP (y quizás en otros tutoriales en la red Envato Tuts +).
Por ahora, sin embargo, nos preocupa leer un archivo que sabemos que existe, y nos preocupa mostrar los resultados en una meta caja..
Lo que tenemos hasta ahora
En este punto, podemos empezar a poner todo junto. Suponiendo que hayamos hecho todo correctamente, deberíamos poder pasar una instancia de
Question_Reader
alMeta_Box_Display
, hacer una pregunta y luego mostrarla en el cuadro meta.Primero, actualicemos el archivo bootstrap:
en eso();En el código de arriba, observe que el
Meta_Box_Display
ahora acepta una instancia del lector de preguntas en su constructor. Esto implica que tendremos que introducir una nueva propiedad, que haremos ahora:question_reader = $ question_reader; / ** * Representa una sola cadena en el contexto del cuadro de metadatos al que pertenece esta * Pantalla. * / public function render () $ file = dirname (__FILE__). '/data/questions.txt'; $ question = $ this-> question_reader-> get_question_from_file ($ file); echo wp_kses ($ pregunta);Observe que este archivo utiliza la ruta a las preguntas que el archivo agregó al subdirectorio de datos. Aparte de que la ruta está codificada, esta clase también depende de una instancia de
Question_Reader
.Para los fines de la demostración en la que estamos trabajando (a saber, espacios de nombres y carga automática), está bien. En un proyecto futuro, nos gustaría que los proyectos tuvieran menos acoplamiento entre ellos. Quizás este sea un tema para un futuro tutorial..
Sin embargo, la principal conclusión del código anterior es que la
Meta_Box_Display
La clase ahora puede mostrar una pregunta al usuario..Además, notar el uso de
wp_kses
por el bien de sanear los datos antes de presentarlos al usuario.Refrescando el Añadir nueva publicación La página debe presentarle una imagen como esta:
Y si actualiza la página, podrá ver nuevas preguntas que se están cargando..
A dónde vamos desde aquí?
Obviamente, todavía tenemos que abordar los temas de espacios de nombres y carga automática, ¡pero está bien! Es importante que establezcamos las bases para un complemento que no los use. De esa manera, cuando nosotros hacer Implementarlos, podemos ver los beneficios que conllevan..
Además, todavía tenemos trabajo adicional por hacer: Necesitamos introducir JavaScript y CSS y un cargador de activos. Esto nos permitirá obtener una imagen aún más amplia de cómo es beneficioso empaquetar nuestros archivos en espacios de nombres.
Recuerda, puedes encontrar todos mis tutoriales anteriores en mi página de perfil y puedes seguirme en mi blog o en Twitter.
Como siempre, si está buscando otras utilidades que lo ayuden a desarrollar su creciente conjunto de herramientas para WordPress o, por ejemplo, el código para estudiar y tener más experiencia en WordPress, no olvide ver lo que tenemos disponible en Envato Mercado.
Dicho esto, tendremos una versión de trabajo del plugin lista para descargar a partir del próximo tutorial de esta serie. Si desea utilizar el código en el tutorial anterior, no dude en intentarlo. Además, siéntase libre de hacer cualquier pregunta en los comentarios..
Recursos