El código orientado a objetos, entre otras cosas, puede ayudar a organizar y agregar reutilización a su código. En este tutorial, te enseñaré los conceptos básicos para escribir un complemento de WordPress utilizando técnicas orientadas a objetos. Usaremos la API de Dribbble como ejemplo para este tutorial. Listo?
Antes de continuar con este tutorial, debe tener al menos una comprensión elemental de cómo escribir un complemento de WordPress. Jonathan ha escrito un increíble tutorial sobre "Cómo escribir un complemento de WordPress". Dale una lectura.
La creación de complementos de WordPress con código orientado a objetos es bastante eficiente y ordenada, en comparación con el uso de código de procedimiento. Es más fácil administrar el código base y expandirlo usando técnicas de herencia, lo que puede ser particularmente útil al escribir un complemento grande.
Para escribir un plugin de WordPress, primero necesitamos un sentido de la dirección. Vamos a escribir un complemento que mostrará las últimas fotos de Dribbble, utilizando su API REST. Luego agregaremos soporte de código corto para publicaciones y widgets, y etiqueta de plantilla para temas.
El código orientado a objetos se basa en clases y métodos (funciones). Vamos a crear nuestra clase principal, que interactuará con los ganchos y filtros de WordPress..
clase WPDribbble función pública __construct () $ wpDribbble = new WPDribbble ();
Las clases de PHP tienen una función constructora., __construir
, que se ejecuta tan pronto como se crea una instancia de una nueva instancia de una clase. Todos los ganchos y filtros de WordPress se registrarán en el constructor de nuestra clase de plugin. Vamos a seguir adelante y registrar un código corto para nuestro complemento. los add_shortcode ()
La función / gancho irá bajo la función del constructor.
La nueva instancia de una clase / objeto se registra usando el nuevo
palabra clave. Consulte la última línea en el código de abajo.
clase WPDribbble función pública __construct () add_shortcode ('Dribbble', array ($ this, 'shortcode')); shortcode de función pública () $ wpDribbble = new WPDribbble ();
Observe cómo estamos usando un
formación
en el parámetro de función de devolución de llamada? Para registrar funciones de devolución de llamada dentro de un objeto, tenemos que usar unformación
.
El primer elemento de la matriz hace referencia al objeto, a través de $ esto
. El segundo elemento en el formación
es el nombre del método dentro de la clase. Todos los ganchos y filtros deben ser referenciados así dentro de una clase.
# 1. Uso estándar add_shortcode ('shortcode_name', 'shortcode_func'); function shortcode_func () // El contenido de esta función se ejecutará cuando el blogger // use el shortcode [shortcode_name]. # 2. Con PHP 5.3, podemos pasar una función anónima. add_shortcode ('shortcode_name', function () // El contenido de esta función se ejecutará cuando el blogger // use el [shortcode_name] shortcode.); # 3. Dentro de una clase WPDribbble public function __construct () add_shortcode ('Dribbble', array ($ this, 'shortcode')); shortcode de función pública () // El contenido de esta función se ejecutará cuando el blogger // use el shortcode [shortcode_name].
Dado que actualmente no requerimos ninguna función de API sofisticada, vamos a crear un contenedor de API bastante simple para Dribbble. Ya hay una biblioteca disponible para Dribbble, pero, por el bien de este tutorial, vamos a escribir la nuestra. Te ayudará a entender los conceptos detrás de este tutorial..
Vamos a escribir un DribbbleAPI. objeto
, y registrar un método
llamado getPlayerShots ()
para interactuar con la API de Dribbble y devolver una formación
de los últimos tiros.
Vamos a crear un nuevo archivo para esta clase, llamado DribbbleAPI.php
clase DribbbleAPI // url a Dribbble api protected $ apiUrl = 'http://api.dribbble.com/'; // nombre de usuario o usuario de Dribbble protegido $ usuario;
Arriba, estamos configurando dos variables de clase.
__construir
) método.clase DribbbleAPI // url a Dribbble api protected $ apiUrl = 'http://api.dribbble.com/'; // nombre de usuario o usuario de Dribbble protegido $ usuario; función pública __construct ($ user) $ this-> user = $ user;
Al constructor se le pasa un $ usuario
variable, que luego el constructor pasa a la propiedad de clase, llamada usuario
.
Prefijamos la propiedad, o nombre de variable con público
para especificar que el valor de esta propiedad se puede recuperar desde fuera de la clase
. Si por el contrario deseamos limitar el acceso a la propiedad solo a esto clase
, y tal vez cualquier clase
Es que heredamos de ella, usaríamos el protegido
prefijo. Esta práctica se conoce como encapsulación.
Tenemos la base lista para nuestro contenedor Dribbble API. Ahora, vamos a escribir un nuevo método
, llamado getPlayerShots ()
. El propósito de esto método
será consultar la API y convertir el resultado en un formación
para uso dentro de nuestro plugin.
clase DribbbleAPI // url a Dribbble api protected $ apiUrl = 'http://api.dribbble.com/'; // nombre de usuario o usuario de Dribbble protegido $ usuario; función pública __construct ($ user) $ this-> user = $ user; función pública getPlayerShots ($ perPage = 15) $ user = $ this-> user; $ json = wp_remote_get ($ this-> apiUrl. 'players /'. $ user. '/ shots? per_page ='. $ perPage); $ array = json_decode ($ json ['body']); $ shots = $ array-> shots; devuelve $ tiros;
Aprende más sobre wp_remote_get.
los getPlayerShots
La función recupera al usuario de la variable de clase. Utiliza WordPress ' wp_remote_get
Función para consultar la API de Dribbble. La API responde a nuestra consulta con una cadena JSON, que luego se analiza en una formación
y enviado de vuelta a la función utilizando el regreso
palabra clave.
Esto es todo lo que requerimos de la API en este momento, simplemente un formación
de tiros de jugador. Si requerimos más funcionalidad en el futuro, podemos agregar más método
s a la corriente clase
, o crear un nuevo clase
que se extiende éste. Una vez más, esto se conoce como herencia.
DribbbleAPI
ClaseEsta es la parte divertida; el recién horneado DribbbleAPI
clase
entrará en uso. Vamos a recorrer las tomas extraídas de la API y generaremos un html
Lista de tomas, que se pasará al código corto y la etiqueta de la plantilla. Durante el bucle, las imágenes de Dribbble de tamaño completo se almacenarán en caché y se guardarán en la carpeta del complemento, y las miniaturas se generarán utilizando TimThumb.
Para determinar si las imágenes completas ya están almacenadas localmente, el ruta del plugin
es requerido. Además, para generar las miniaturas con timthumb
, la url de plugin
es requerido. Para este propósito, crearemos dos variables de clase llamadas pluginPath
y pluginURL
en nuestro WPDribbble
clase, y luego establecer sus valores desde dentro del constructor método
.
clase WPDribbble protected $ pluginPath; protected $ pluginUrl; función pública __construct () // Establecer ruta del complemento $ this-> pluginPath = dirname (__ FILE__); // Establecer la URL del complemento $ this-> pluginUrl = WP_PLUGIN_URL. '/ wp-Dribbble'; add_shortcode ('Dribbble', array ($ this, 'shortcode'));
getImages ()
MétodoCrear un nuevo método
dentro de WPDribbble
clase
, llamado getImages.
Dentro de una
clase
, Puedes usar nombres genéricos para funciones. No entrarán en conflicto con otros complementos ni con las funciones integradas de WordPress, porque están bajo laclase
espacio de nombres.
función pública getImages ($ usuario, $ imágenes = 3, $ ancho = 50, $ altura = 50, $ título = verdadero)
$ usuario
Se utilizará al registrar una nueva instancia de la DribbbleAPI
clase.$ imagenes
se utilizará al consultar la API a través de la getPlayerShots
método.A continuación, vamos a incluir el DribbbleAPI
clase en el getImages ()
función, y crear una nueva instancia de ella para agarrar las imágenes.
función pública getImages ($ usuario, $ imágenes = 3, $ ancho = 50, $ altura = 50, $ título = verdadero) incluye 'DribbbleAPI.php'; $ DribbbleAPI = nuevo DribbbleAPI ($ usuario); $ shots = $ DribbbleAPI-> getPlayerShots ($ images); si ($ tiros)
los $ tiros
variable en el código se rellena con una formación
de tres Dribbbles recientes de la $ usuario
.
Como se mencionó anteriormente, vamos a recorrer el $ tiros
formación
, y guarda las imágenes a tamaño completo localmente para propósitos de almacenamiento en caché. Las imágenes en caché se utilizarán con TimThumb para servir las miniaturas. Para almacenar imágenes completas y miniaturas generadas por TimThumb, cree dos carpetas. Nosotros usaremos imágenes completas /
para almacenar las imágenes a tamaño completo, y cache/
para las miniaturas, ya que ese es el nombre de carpeta predeterminado para TimThumb.
El HTML para la lista se generará dentro del $ tiros
lazo.
función pública getImages ($ usuario, $ imágenes = 3, $ ancho = 50, $ altura = 50, $ título = verdadero) incluye 'DribbbleAPI.php'; $ DribbbleAPI = nuevo DribbbleAPI ($ usuario); $ shots = $ DribbbleAPI-> getPlayerShots ($ images); if ($ shots) $ html [] = '
'. $ disparo-> título. '
'; // combina la url de disparo, el título y la miniatura para agregar a la lista ul $ html [] = 'Siempre es una buena idea agregar clases a cada elemento de su complemento. Esto proporciona a los usuarios avanzados de su complemento la libertad de personalizarlo. Evite utilizar CSS en línea para el contenido que se genera a través de su complemento.
Los códigos cortos, como su nombre indica, permiten a los usuarios agregar fácilmente contenido complejo a las publicaciones del blog.
Ya tenemos el add_shortcode
Enganche listo en nuestro constructor clase plugin. Ahora, vamos a escribir el código corto método
dentro de nuestro clase
, lo cual exractará los atributos del código corto y devolverá las imágenes de Dribbble usando el getImages ()
método.
Estaremos llamando a nuestro código corto [Dribbble]
. Como se mencionó anteriormente, el nombre del shortcode está determinado por el primer parámetro en el add_shortcode
función. Se utilizará con los atributos requeridos para la getImages ()
método. Por ejemplo: [Usuario de Dribbble = imágenes de haris = 5 ancho = 100 altura = 100 título = verdadero]
.
función pública shortcode ($ atts) // extraer los atributos en las variables extracto (shortcode_atts (array ('images' => 3, 'width' => 50, 'height' => 50, 'caption' => true,) , $ atts)); // pase los atributos a la función getImages y haga que las imágenes devuelvan $ this-> getImages ($ atts ['usuario'], $ images, $ width, $ height, $ caption);
De forma predeterminada, los widgets de WordPress no admiten códigos cortos, sin embargo, mediante el uso de widget_text
filtro, podemos forzar el soporte de shortcode en widgets de WordPress.
Podemos añadir el filtro en nuestra WPDribbble
constructor de objetos.
función pública __construct () // Establecer ruta del complemento $ this-> pluginPath = dirname (__ FILE__); // Establecer la URL del complemento $ this-> pluginUrl = WP_PLUGIN_URL. '/ wp-Dribbble'; add_shortcode ('Dribbble', array ($ this, 'shortcode')); // Agregar soporte de shortcode para widgets add_filter ('widget_text', 'do_shortcode');
La etiqueta de la plantilla se puede utilizar directamente en los temas de WordPress. El propósito básico de la etiqueta de plantilla será crear una nueva instancia de nuestro WPDribbble
clase, y llamar a la getImages ()
método. La etiqueta de la plantilla será una función PHP simple y se debe registrar fuera del complemento clase
. Necesita tener un nombre único; de lo contrario, entrará en conflicto con las funciones / complementos con un nombre similar. Como nuestro plugin se llama WP-Dribbble
, llamaremos la etiqueta de la plantilla, wp_Dribbble ()
.
función wp_Dribbble ($ usuario, $ imágenes = 3, $ ancho = 50, $ altura = 50, $ caption = verdadero) $ wpDribbble = nuevo WPDribbble; echo $ wpDribbble-> getImages ($ user, $ images, $ width, $ height, $ caption);
¡Felicidades! Has escrito con éxito un plugin de WordPress con OOP. Si tiene alguna pregunta, avíseme y haré todo lo posible para ayudarlo.?