En la primera parte de este artículo, discutimos cómo usar las funciones incorporadas para comunicarse con WordPress.org y recuperar los detalles del complemento.
En este tutorial pondremos la teoría en acción para crear un complemento simple que nos permitirá mostrar detalles de cualquier complemento alojado en WordPress.org en nuestro sitio web de WordPress usando códigos cortos.
Supongo que usted es un desarrollador de complementos y conoce los conceptos básicos, pero en caso de duda, le sugiero que lea los siguientes dos artículos:
Con este plugin queremos crear un shortcode como [mpi slug = "my-plugin-information" field = "version"]
que puede aceptar dos atributos: "slug" y "field", luego, en función de eso, recuperamos y mostramos la información de cualquier complemento alojado en el repositorio de WordPress.org.
Vamos a empezar por crear una carpeta llamada my-plugin-information en tus wp-content / plugins directorio. Dentro de él, crea un archivo llamado my-plugin-info.php y pegue el siguiente código en él:
En el código anterior, hemos creado e inicializado nuestra clase de plugin DOT_MyPluginInfo
. En su interior se encuentran los bloques generales de cualquier complemento, por ejemplo, el __construir()
método.
La función init_my_plugin_info
está enganchado a la en eso
Acción para que se ejecute después de cargar WordPress pero antes de que se envíen los encabezados. Dentro de la funcion init_my_plugin_info
Hemos registrado nuestro shortcode usando el add_shortcode
función.
Nota: Para leer más sobre add_shortcode
, Echa un vistazo al Codex.
El complemento anterior ahora tiene suficiente código para que WordPress lo reconozca desde el panel del complemento. Si ya ha creado un archivo según las instrucciones, ahora puede visitar el Complementos página y activar este plugin.
Dado que queremos la flexibilidad para elegir qué información queremos mostrar sobre un complemento, creamos un shortcode con dos atributos. La primera llamada "slug" se utilizará para especificar qué datos del complemento se deben recuperar. El segundo atributo "campo" se usará para especificar qué información exacta sobre un complemento necesitamos mostrar.
Entonces, por ejemplo, si queremos mostrar la cantidad de veces que se ha descargado este complemento, simplemente debemos agregar el texto debajo del editor de publicaciones y el resultado final debería ser algo como "Descargado 100 veces".
Tiempo de descarga [mpi slug = "my-plugin-information" = "descargado"].
Utilizando add_shortcode
registramos nuestro shortcode para que cada vez que se encuentre en el contenido de la publicación, la función render_mpi ()
Será llamado para procesarlo. A partir de ahora, el resto del código se colocará dentro de esta función para manejar nuestro código corto..
render_mpi ()
Para mostrar la información del complemento, primero debemos procesar el código abreviado para obtener los atributos. Agregue el siguiente código dentro de render_api
función:
// obtenga nuestra variable de $ atts extract (shortcode_atts (array ('slug' => ", // foo es un valor predeterminado 'field' =>"), $ atts));
Esto extrae los dos atributos "slug" y "field" si se proporcionan. Antes de seguir adelante, primero verificamos si existen valores para "slug" y "field", y si no, dejamos de seguir procesando.
/ ** * Verificar si existe slug * / if (! $ Slug) return false; / ** * Comprobar si el campo existe * Valor de retorno basado en el atributo del campo * / if (! $ Field) return false; else // $ chequeo de campo
El código anterior verificará si existe "slug", y si no existe, devolverá false. Si "slug" existe, se procederá a verificar el atributo "field". Ya que solo estamos creando un código abreviado para mostrar una información específica sobre un complemento, verificar si ambos atributos existen antes de seguir procesando guardará llamadas innecesarias a la API de complementos de WordPress.org.
Ahora, si los valores para los atributos "slug" y "field" se proporcionan en el código abreviado, procederemos primero a sanear ambos valores..
// Atributos de desinfección $ slug = sanitize_title ($ slug); $ field = sanitize_title ($ field);
Para evitar enviar una solicitud a WordPress.org cada vez que se carga una página que contiene este código abreviado, debemos guardar la información del complemento localmente. De esta manera, si ha colocado más de un código abreviado para mostrar diferentes detalles del mismo complemento, podemos acelerar el proceso mostrando datos de la información guardada localmente en su sitio web..
¿Pero qué pasa si el complemento se actualiza y seguimos mostrando datos antiguos?? Bueno, para solucionarlo, la opción más rápida posible es guardar los datos de nuestro complemento individual utilizando la API de Transients y estableciendo una fecha de caducidad en los datos.
Otro problema sería si tiene códigos cortos que están recuperando datos sobre diferentes complementos. Si los almacenamos con un solo nombre transitorio, el resultado podría ser inesperado. Para abordar esto, le damos un nombre único a los transitorios guardados usando el atributo "slug".
Vamos a proceder primero creando una variable. $ mpi_transient_name
para guardar nombres transitorios únicos basados en el atributo "slug".
// Crea una matriz vacía con un nombre de variable diferente según la barra de complemento $ mpi_transient_name = 'mpi-'. $ slug;
A continuación comprobamos, si el transitorio ya existe:
/ ** * Compruebe si existen datos transitorios con el complemento * / $ mpi_info = get_transient ($ mpi_transient_name);
Si el transitorio existe, luego procedemos a mostrar datos basados en el atributo "campo" o, de lo contrario, utilizaremos plugins_api
para conectarse a WordPress.org y solicitar la información del complemento.
if (vacío ($ mpi_info)) / ** * Conéctese a WordPress.org usando plugins_api * Acerca de plugins_api - * http://wp.tutsplus.com/tutorials/plugins/communicating-with-the-wordpress-org-plugin -api / * / require_once (ABSPATH. 'wp-admin / includes / plugin-install.php'); $ mpi_info = plugins_api ('plugin_information', array ('slug' => $ slug)); // Compruebe si hay errores con los datos devueltos desde WordPress.org si (! $ Mpi_info o is_wp_error ($ mpi_info)) return false; // Configure un transitorio con los datos del complemento // Use la API de Opciones con la tarea de actualización automática de cron en la próxima versión. set_transient ($ mpi_transient_name, $ mpi_info, 1 * HOUR_IN_SECONDS);
En el código anterior, hicimos tres cosas:
$ mpi_info
Ahora si el valor del atributo slug era "my-plugin-information
"entonces el nombre del transitorio que almacena la información del complemento sería"mpi-my-plugin-information
".
Nota: para aprender más sobre plugins_api
Consulte el primer artículo de esta serie, que se muestra en la parte superior de esta publicación..
El último paso implica devolver información específica basada en el valor del atributo "campo". Para ello simplemente utilizamos cheques individuales..
si ($ campo == "descargado") return $ mpi_info-> descargado; if ($ field == "name") return $ mpi_info-> name; if ($ field == "slug") return $ mpi_info-> slug; if ($ field == "version") return $ mpi_info-> version; if ($ field == "author") return $ mpi_info-> author; if ($ field == "author_profile") return $ mpi_info-> author_profile; if ($ field == "last_updated") return $ mpi_info-> last_updated; if ($ field == "download_link") return $ mpi_info-> download_link;
Código de complemento completo:
", // foo es un valor predeterminado 'campo' =>"), $ atts)); / ** * Verificar si existe slug * / if (! $ Slug) return false; / ** * Comprobar si el campo existe * Valor de retorno basado en el atributo del campo * / if (! $ Field) return false; else // Atributos de desinfección $ slug = sanitize_title ($ slug); $ field = sanitize_title ($ field); // Cree una matriz vacía con el nombre de la variable diferente en función de la barra de complemento $ mpi_transient_name = 'mpi'. $ slug; / ** * Compruebe si existen datos transitorios con el complemento * / $ mpi_info = get_transient ($ mpi_transient_name); if (vacío ($ mpi_info)) / ** * Conéctese a WordPress.org usando plugins_api * Acerca de plugins_api - * http://wp.tutsplus.com/tutorials/plugins/communicating-with-the-wordpress-org-plugin -api / * / require_once (ABSPATH. 'wp-admin / includes / plugin-install.php'); $ mpi_info = plugins_api ('plugin_information', array ('slug' => $ slug)); // Compruebe si hay errores con los datos devueltos desde WordPress.org si (! $ Mpi_info o is_wp_error ($ mpi_info)) return false; // Configure un transitorio con los datos del complemento // Use la API de Opciones con la tarea de actualización automática de cron en la próxima versión. set_transient ($ mpi_transient_name, $ mpi_info, 1 * HOUR_IN_SECONDS); si ($ campo == "descargado") return $ mpi_info-> descargado; if ($ field == "name") return $ mpi_info-> name; if ($ field == "slug") return $ mpi_info-> slug; if ($ field == "version") return $ mpi_info-> version; if ($ field == "author") return $ mpi_info-> author; if ($ field == "author_profile") return $ mpi_info-> author_profile; if ($ field == "last_updated") return $ mpi_info-> last_updated; if ($ field == "download_link") return $ mpi_info-> download_link; // $ chequeo de campo // render_mpi () // finalizar la nueva clase DOT_MyPluginInfo (); ?>
Este código de complemento está disponible en GitHub y también puede descargarlo de WordPress.org
Ahora simplemente puede ir a su editor de publicaciones y agregar un shortcode como:
Tiempo de descarga [mpi slug = "my-plugin-information" = "descargado"].
Y se mostrará:
Descargado 10 veces.
Al reemplazar el valor del atributo "campo", puede mostrar información diferente, como por ejemplo:
[mpi slug = "my-plugin-information" field = "name"]
[mpi slug = "my-plugin-information" field = "version"]
[mpi slug = "my-plugin-information" field = "slug"]
[mpi slug = "my-plugin-information" field = "author"]
[mpi slug = "my-plugin-information" field = "author_profile"]
[mpi slug = "my-plugin-information" field = "last_updated"]
[mpi slug = "my-plugin-information" field = "download_link"]
Para mantener las cosas simples, he usado transitorios para guardar la información del complemento. Sin embargo, los transitorios nunca se utilizaron para guardar datos importantes. Un método alternativo sería guardar los datos del complemento utilizando la API de opciones, add_options ()
, o como meta de publicación y luego programe una tarea cron para actualizar los datos cada hora.
Utilizando plugins_api
hemos demostrado lo fácil que es comunicar y recuperar información de cualquier complemento alojado en WordPress.org.
Es posible que también desee ver otros complementos, como Información del complemento (que también utiliza plugins_api
, y I Make Plugins, para ver cómo han logrado la misma tarea..