WordPress es la plataforma de blogs más grande disponible en Internet hoy en día; y con el lanzamiento oficial de la versión tres a la vuelta de la esquina, solo será más grande. Como tal, en los próximos pasos independientes, aprenderemos los entresijos del desarrollo del complemento de WordPress, comenzando con la creación de nuestro primer complemento simple, "Optimización simple".
Este tutorial asumirá que tienes al menos un entendimiento de principiante de PHP y la sintaxis de WordPress. Aunque lo cubriremos todo, algunos conocimientos de antemano lo ayudarán a comprender los conceptos mucho más fácilmente. También supongo que tienes una configuración de blog WP y listo para funcionar.
El primer paso, al escribir un complemento WP, es determinar todo lo que quieres que haga. Ya que este es nuestro primer plugin, no haremos nada demasiado drástico. Vamos a crear algo que acelerará nuestro blog; nuestras páginas se procesarán más rápido, y también haremos un poco de SEO para mejorar nuestro rango de búsqueda y capacidad de búsqueda.
"¡Siempre crea una lista de lo que quieres que haga tu complemento antes de escribir cualquier código!"
Para comenzar, navegue a su carpeta de complementos ("/ wp-content / plugins /"), y cree una nueva carpeta. Llamaremos a nuestro "simple-optimización". A continuación, dentro de esta carpeta necesitaremos crear dos archivos. El primero será el archivo del complemento real (llamado "main.php"), y el segundo será el README obligatorio ("readme.txt"). Vamos a dejar readme.txt vacío por el momento; así que abre main.php en tu editor de texto preferido y copia en el código de abajo.
Este texto es el mínimo necesario para que un complemento aparezca en el directorio de complementos de WordPress. Obviamente necesitarás llenar cada parte como mejor te parezca.
Las dos primeras características que vamos a implementar también serán las más simples. Por defecto, WordPress agrega varias meta-etiquetas a la
sección de tu blog, pero el simple hecho del asunto es que estas meta-etiquetas no tienen ningún valor en absoluto; así que simplemente vamos a evitar que WordPress los agregue. Cada vez que WordPress realiza una acción, se denomina filtrar o un acción, y podemos eliminar o manipular estos filtros y acciones (puede encontrar una lista de todos los filtros aquí y todas las acciones aquí). En este caso, queremos eliminar las diversas acciones que agregan esas meta-etiquetas.Para ello, utilizamos una función muy sencilla llamada "remove_action ('acción', 'función')". Esta función eliminará la función declarada en el segundo parámetro de la acción, el primer parámetro.
// Limpiar wp_head // Eliminar el enlace de descubrimiento realmente simple remove_action ('wp_head', 'rsd_link'); // Eliminar el enlace de Windows Live Writer remove_action ('wp_head', 'wlwmanifest_link'); // Eliminar el número de versión remove_action ('wp_head', 'wp_generator');
El mismo principio exacto se aplica a los dos filtros que vamos a eliminar:
// Eliminar las comillas rizadas remove_filter ('the_content', 'wptexturize'); remove_filter ('comment_text', 'wptexturize'); // Permitir HTML en los perfiles de usuario remove_filter ('pre_user_description', 'wp_filter_kses');
Ahora que hemos recortado esa cantidad, asegurémonos de que nuestro blog tenga algún SEO básico; es decir, asegurémonos de que tenemos palabras clave por página, que corresponden a esa página y cambiemos la descripción para que coincida más con el artículo. Para nuestras palabras clave, vamos a agarrar las etiquetas de la página / publicación actual. Esto se hace super simple por la función. "wp_get_post_tags ()". wp_get_post_tags devolverá una serie de etiquetas de la publicación actual. Luego podemos formatear fácilmente esta matriz en una cadena y colocarla dentro de nuestro encabezado (dentro de la función "wp_head ()", que todos los temas deberían tener ya en él) adjuntando nuestra función a la acción wp_head.
Empecemos por crear una nueva función., tags_to_keywords (), Y, dentro de esta función, escribiremos un sencillo. si declaración, que verifica si la página actual es una única publicación o página (usando las funciones WP: is_single () e is_page ()). A continuación, crearemos una variable dentro de esta sentencia if, llamada $ etiquetas, y establecer su contenido a la función. wp_get_post_tags (); sin embargo, para que esta función funcione, necesitamos pasar un parámetro de "post_id". La forma más fácil de obtener es globalizar la variable WP. $ post que contiene el ID de la publicación ($ post-> ID, $ post es un objeto por lo que estamos llamando a sus valores como tal).
// SEO // agregar etiquetas como palabras clave función tags_to_keywords () global $ post; if (is_single () || is_page ()) $ tags = wp_get_post_tags ($ post-> ID);
A continuación, usaremos un para cada para filtrar a través de los datos de $ tags, y crear una nueva matriz con solo la información que queremos ($ tag_array). A continuación, implosionaremos la matriz en una cadena y separaremos cada elemento de la matriz con una coma y un espacio ($ tag_string). Luego, crearemos otra sentencia if que compruebe si $ tag_string tiene un valor (es decir, tenemos alguna etiqueta para la publicación) y, si la tiene, muestra el HTML final..
function tags_to_keywords () global $ post; if (is_single () || is_page ()) $ tags = wp_get_post_tags ($ post-> ID); foreach ($ tags as $ tag) $ tag_array [] = $ tag-> name; $ tag_string = implode (',', $ tag_array); if ($ tag_string! == ") echo"\ r \ n ";
Lo último que debemos hacer ahora es adjuntar nuestra nueva función con la acción wp_head. Para ello vamos a llamar. add_action ('acción', 'función'), y pásele los parámetros "wp_head" y "tags_to_keywords" (en ese orden).
add_action ('wp_head', 'tags_to_keywords');
Para aumentar aún más nuestro SEO, también agregaremos nuestros metadatos de descripción al encabezado, utilizando el mismo método que las palabras clave. Una vez que hayamos reescrito la sentencia if, vamos a crear una nueva variable $ all_post_content y llenarlo usando la función WP wp_get_single_post () (y pase el parámetro de $ post-> ID). Esto nos dará un objeto lleno de todos los datos sobre nuestra publicación. Con esta variable, podemos crear una descripción utilizando el contenido real de la publicación, pero la acortaremos a cien caracteres utilizando la función subs ($ extracto). Y luego, simplemente haremos eco del HTML con el extracto escrito en. (Opcionalmente, también puede agregar un más declaración, y haga eco de la descripción de su blog usando la función get_bloginfo ('descripción').)
// agregar excepto como función de descripción excerpt_to_description () global $ post; if (is_single () || is_page ()) $ all_post_content = wp_get_single_post ($ post-> ID); $ excerpt = substr ($ all_post_content-> post_content, 0, 100). ' […] '; eco "\ r \ n "; else echo"\ r \ n "; add_action ('wp_head', 'excerpt_to_description');
La característica final de nuestro complemento va a optimizar nuestras tablas de base de datos eliminando la sobrecarga (datos inútiles / en exceso en una tabla SQL creada mediante la manipulación de la base de datos). Para empezar, crearemos una nueva función (optimizar base de datos), y dentro de él, vamos a llamar a la variable global WPDB ($ wpdb). De esa manera, podemos interactuar con la base de datos, sin tener que volver a ingresar nuestros datos de autenticación. $ wpdb tiene varios métodos que puede utilizar para interactuar y recuperar información de la base de datos (lista completa aquí), pero solo usaremos uno, get_results. El uso de get_results con los parámetros de "MOSTRAR TABLAS" y "ARRAY_A" nos devolverá una matriz asociativa de todos los nombres de tablas en la base de datos. En ese momento, podemos usar un foreach para recorrer cada uno de los valores de la matriz (usando array_values para obtener el nombre de la tabla, debido a la forma en que está en capas por la función) y usar otro método $ wpdb, consulte para ejecutar el comando de optimización ("OPTIMIZE TABLE _____").
// Optimizar la función de la base de datos Optimize_database () global $ wpdb; $ all_tables = $ wpdb-> get_results ('SHOW TABLES', ARRAY_A); foreach ($ all_tables as $ tables) $ table = array_values ($ tables); $ wpdb-> query ("OPTIMIZE TABLE". $ table [0]);
Si bien esta función funciona, en realidad nunca se ejecutará porque WordPress no tiene forma de saber cómo ejecutarlo. Afortunadamente, WordPress tiene una característica llamada cron, que programa las funciones para ejecutarse a intervalos específicos (diario, semanal, etc.); Esto es perfecto para nosotros, ya que queremos optimizar nuestra base de datos con frecuencia. Para usar Cron, vamos a crear una nueva función (simple_optimization_cron_on), y llénelo con otra llamada de función a wp_schedule_event (). Para funcionar, wp_schedule_event necesita tres cosas: un tiempo para ejecutar, un intervalo entre cada ejecución y una función para llamar; así que le pasaremos los parámetros: 'tiempo ()' (asumiremos que siempre que se cree el evento cron es un buen momento para llamar a la función), 'diario', 'optimizar_database' en ese orden.
function simple_optimization_cron_on () wp_schedule_event (time (), 'daily', 'optimer_database');
Genial, ahora tenemos nuestro optimizar base de datos función que se agrega a la lista cron de WP, o lo haríamos si tuviéramos que llamar al simple_optimization_cron_on función. Es realmente inseguro y es una mala práctica llamar a sus propias funciones de adición de eventos, ya que a través de algún sistema arbitrario de eventos, podría hacer que la función se llame varias veces. Resulta que WordPress tiene un conjunto de ganchos específicos para que los complementos resuelvan este problema: register_activation_hook y register_deactivation_hook. Estas funciones se llaman cuando un complemento está activado (activado) y desactivado (desactivado). De esta manera, nuestra función cron solo puede ser agregada una vez. Ahora, tenemos la capacidad de eliminar el evento cron si el complemento deja de usarse. Para trabajar, estas funciones necesitan dos datos: la URL del archivo que tiene las funciones de activación y desactivación (el 99% del tiempo "__FILE__" funcionará perfectamente aquí) y el nombre de la función de activación y desactivación. También crearemos una nueva función (simple_optimization_cron_off), y llénelo con una llamada a otra función (wp_clear_scheduled_hook ('optimer_database')) para eliminar nuestro evento cron.
function simple_optimization_cron_off () wp_clear_scheduled_hook ('optimer_database'); register_activation_hook (__ FILE __, 'simple_optimization_cron_on'); register_deactivation_hook (__ FILE __, 'simple_optimization_cron_off');
Lo último que debemos hacer para nuestro nuevo complemento es completar el archivo readme.txt. El directorio del complemento de WordPress utiliza el archivo readme.txt para mostrar toda la información que usted proporciona sobre su complemento. La mejor manera de aprender cómo escribir un archivo readme.txt efectivo es descargar el valor predeterminado de WP y modificarlo para que se ajuste a su complemento. Como el nuestro fue tan simplista, esto es con lo que yo personalmente terminé:
== Optimización simple == Colaboradores: Jonathan Wolfe Enlace del complemento: http://net.tutsplus.com/ Etiquetas: simple, optimización, palabras clave, etiquetas, descripción, SEO, optimizar, base de datos Requiere al menos: 2.5.1 Probado hasta: 2.9.2 Etiqueta estable: troncal Agrega silenciosamente varias funciones de optimización al back-end de WordPress para que su blog o sitio se ejecute más rápido. == Descripción == Simple Optimization agrega varias funciones a WordPress que ayudan a recortar la grasa del sistema y también a limpiar un poco, lo que lleva a un tiempo de carga más rápido para su blog o sitio web. ** Características ** _Eliminar meta etiquetas inútiles: _ * "rsd_link" - Enlace de descubrimiento realmente simple * "wlwmanifest_link" - Enlace de Windows Live Writer * "wp_generator" - Número de versión de WordPress _Eliminar filtros inútiles: _ * "wptexturize" "wp_filter_kses" - HTML en los perfiles de usuario _SEO: _ * Insertar etiquetas de publicación en como palabras clave _ Optimice de forma rutinaria la base de datos_ == Instalación == 1. Descargue, descomprima y cargue en su directorio de complementos de WordPress 2. active el complemento dentro de su Administración de WordPress
Acaba de escribir su primer complemento de WordPress, que está funcionando y listo para el Directorio de Complementos de WP. A lo largo del camino, aprendió sobre filtros y acciones, usando objetos globales de WP, mucho sobre la nomencaltura de WordPress, cómo interactuar con la base de datos, eventos cron y ganchos de activación / desactivación. Si tiene alguna pregunta, por favor deje un comentario y le responderé tan pronto como pueda..
CARNÉ DE IDENTIDAD); // obtener las etiquetas de entrada para cada ($ etiquetas como $ etiqueta) // recorrer cada etiqueta $ etiqueta_array [] = $ etiqueta-> nombre; // crea una nueva matriz con solo nombres de etiqueta $ tag_string = implode (',', $ tag_array); // convierte la matriz en una cadena separada por comas si ($ tag_string! == ") // tenemos etiquetas eco"\ r \ n "; // agregar etiqueta meta a add_action ('wp_head', 'tags_to_keywords'); // Agregar tags_to_keywords a la función wp_head // agregar excepto como función de descripción excerpt_to_description () global $ post; // obtener acceso al objeto $ post si (is_single () || is_page ()) // solo se ejecuta en publicaciones o páginas $ all_post_content = wp_get_single_post ($ post-> ID); // obtener todo el contenido de post / page $ excerpt = substr ($ all_post_content-> post_content, 0, 100). ' […] '; // obtener los primeros 100 caracteres y añadir "[...]" al final echo "\ r \ n "; // agregar etiqueta meta a else // solo se ejecuta si no es una publicación o página eco "\ r \ n "; // agregar etiqueta meta a add_action ('wp_head', 'excerpt_to_description'); // agregar excerpt_to_description a la función wp_head // Optimizar la función de la base de datos optimist_database () global $ wpdb; // obtener acceso al objeto $ wpdb $ all_tables = $ wpdb-> get_results ('MOSTRAR TABLAS', ARRAY_A); // obtener todos los nombres de tablas para cada ($ all_tables como $ tables) // recorrer cada nombre de tabla $ table = array_values ($ tables); // obtener el nombre de la tabla fuera de la matriz $ wpdb-> query ("OPTIMIZE TABLE". $ table [0]); // ejecuta el comando SQL optimizado en la tabla función simple_optimization_cron_on () wp_schedule_event (time (), 'daily', 'optimer_database'); // rdd Optimize_database to wp cron events function simple_optimization_cron_off () wp_clear_scheduled_hook ('optimer_database'); // eliminar la base de datos optimizada de los eventos cron de wp register_activation_hook (__ FILE __, 'simple_optimization_cron_on'); // ejecuta simple_optimization_cron_on en la activación del complemento register_deactivation_hook (__ FILE __, 'simple_optimization_cron_off'); // ejecutar simple_optimization_cron_off en la desactivación del complemento?>