Uso de las Meta Box de WordPress para construir un complemento de SEO básico

Una de las características principales que proporciona WordPress para ampliar su funcionalidad es su Meta Box API. Estas cajas de meta le permiten agregar fácilmente datos adicionales a su contenido. Por ejemplo, el Publicar etiquetas meta box le permite establecer etiquetas para su publicación.

En este artículo, construiremos un complemento básico de SEO que agrega una meta descripción y un título de Open Graph y una etiqueta de descripción a la cabeza Elemento de las páginas de WordPress. Al hacer esto, también aprenderemos cómo crear un meta box personalizado, cómo sanear los datos proporcionados por el usuario, cómo guardar los datos en una publicación o página, y cómo recuperar y recuperar los datos guardados..

Debido a que no explicaré todas y cada una de las partes de lo que hacen los códigos en este tutorial, se asume un conocimiento básico de las meta box y lo que hacen las funciones de PHP. Si no está familiarizado con los conceptos básicos, entonces un gran comienzo en Cómo crear cajas de Meta / escritura personalizadas de WordPress..

Creando la Meta Box

Primero, tenemos que decidir dónde debe aparecer el cuadro de meta.. 

En nuestro plugin, el cuadro de meta se agregará en el enviar y página pantalla. Para lograr esto, se crea una función que contiene una variable que almacena una matriz de dónde mostrar el cuadro de meta y una para cada recorra ese bucle a través de la matriz y agregue el meta box a la pantalla dada usando el add_meta_box función. 

Y finalmente, la función se engancha a la add_meta_boxes acción.

función tes_mb_create () / ** * @array $ screens Pantalla de escritura en la que se muestra la meta box * @values ​​post, page, dashboard, link, attach, custom_post_type * / $ screens = array ('post', 'página' ); foreach ($ screens as $ screen) add_meta_box ('tes-meta', 'Search Engine Listing', 'tes_mb_function', $ screen, 'normal', 'high');  add_action ('add_meta_boxes', 'tes_mb_create');

Alternativamente, usted podría agregar un doble add_meta_box función para incluir el cuadro de meta en la pantalla de la publicación y la página de la siguiente manera:

function tes_mb_create () add_meta_box ('tes-meta', 'Search Engine Listing', 'tes_mb_function', 'post', 'normal', 'high'); add_meta_box ('tes-meta', 'Search Engine Listing', 'tes_mb_function', 'page', 'normal', 'high');  add_action ('add_meta_boxes', 'tes_mb_create');

Codificando los campos de Meta Box

A partir del código anterior, la función de devolución de llamada para imprimir el HTML para la sección de la pantalla de edición se menciona como tes_mb_function cual es el tercer argumento pasado a add_meta_box función.

En nuestro complemento, solo estamos codificando dos campos de formulario HTML para manejar los datos de Título y Descripción.

function tes_mb_function ($ post) / / recupera los valores de metadatos si existen $ tes_meta_title = get_post_meta ($ post-> ID, '_tes_meta_title', verdadero); $ tes_meta_description = get_post_meta ($ post-> ID, '_tes_meta_description', true); // Agregue un campo nonce para que podamos verificarlo más adelante al validar wp_nonce_field ('tes_inner_custom_box', 'tes_inner_custom_box_nonce'); eco '
Etiqueta del título:
Metadescripción:
';

La explicación de la tes_mb_function El código de arriba es el siguiente:

  • Recupere y almacene los valores de metadatos en una variable solo si existe. Esto se hace para rellenar los campos con sus valores cuando está presente en la base de datos..
  • Se agrega un feed de nonce para que podamos verificarlo más adelante durante la verificación antes de que los datos insertados en los campos del formulario se guarden en la base de datos.
  • La forma HTML que consta de un elemento de entrada de campo de texto y un área de texto para capturar los datos de etiqueta de título y descripción respectivamente se repite / imprime.

En este punto, debería estar viendo el cuadro de meta en la pantalla de publicación y página.


Guardando datos de Meta Box

Un cuadro de meta no está completo hasta que pueda guardar los datos en la base de datos. El nombre de la función para manejar el almacenamiento de datos será tes_mb_save_data. Su código es el siguiente..

function tes_mb_save_data ($ post_id) / * * Necesitamos verificar que provenga de nuestra pantalla y con la debida autorización, * porque save_post se puede activar en otros momentos. * / // Compruebe si nuestro nonce está configurado. if (! isset ($ _POST ['tes_inner_custom_box_nonce'])) devuelve $ post_id; $ nonce = $ _POST ['tes_inner_custom_box_nonce']; // Verificar que el nonce sea valido. if (! wp_verify_nonce ($ nonce, 'tes_inner_custom_box')) devuelve $ post_id; // Si esto es un guardado automático, nuestro formulario no se ha enviado, por lo que no queremos hacer nada. if (definido ('DOING_AUTOSAVE') && DOING_AUTOSAVE) devuelve $ post_id; // Revisa los permisos del usuario. if ('page' == $ _POST ['post_type']) if (! current_user_can ('edit_page', $ post_id)) devuelve $ post_id;  else if (! current_user_can ('edit_post', $ post_id)) devuelve $ post_id;  / * OK, es seguro para nosotros guardar los datos ahora. * / // Si existen entradas antiguas, recupéralas $ old_title = get_post_meta ($ post_id, '_tes_meta_title', true); $ old_description = get_post_meta ($ post_id, '_tes_meta_description', true); // Sanitizar la entrada del usuario. $ title = sanitize_text_field ($ _POST ['tes_meta_title']); $ description = sanitize_text_field ($ _POST ['tes_meta_description']); // Actualizar el campo meta en la base de datos. update_post_meta ($ post_id, '_tes_meta_title', $ title, $ old_title); update_post_meta ($ post_id, '_tes_meta_description', $ description, $ old_description);  add_action ('save_post', 'tes_mb_save_data');

Vamos a examinar el código anterior:

  • Primero, verificamos que esto vino de nuestra pantalla y con la debida autorización, porque save_post puede activarse en otros momentos y también verificar que el nonce previamente establecido en tes_mb_function es válida.
  • Luego, si ya existe una entrada en la base de datos, la recuperaremos y almacenaremos en $ antiguo_título y $ old_description variable. Estamos haciendo esto porque el update_post_meta La función que guarda los datos en la base de datos opcionalmente requiere que se verifique un valor anterior antes de actualizar la fila de la base de datos de meta box con los nuevos valores..
  • Después de eso, los datos enviados se desinfectan usando WordPress ' sanitize_text_field función que convierte HTML a su entidad, elimina todas las etiquetas, elimina saltos de línea, tabulaciones y espacio en blanco adicional, elimina octetos.
  • Los metadatos se actualizan a la base de datos a través de. update_post_meta.
  • Finalmente, el tes_mb_save_data está enganchado a la save_post Acción para guardar los datos de meta box cuando se actualiza la publicación o la página..

Haciendo uso de los datos guardados

No se olvide, los datos guardados se utilizarán para agregar un título y una descripción de Open Graph, así como la etiqueta de descripción meta en el cabeza elemento de cada pagina.

Para ello, crearemos una función llamada tes_mb_display que contendrá las etiquetas deseadas y luego, enganche en  wp_head acción.

function tes_mb_display () global $ post; // recupera los valores de metadatos si existen $ tes_meta_title = get_post_meta ($ post-> ID, '_tes_meta_title', true); $ tes_meta_description = get_post_meta ($ post-> ID, '_tes_meta_description', true); eco '      ';  add_action ('wp_head', 'tes_mb_display'); 
  • Para detectar con éxito la ID de la publicación, tomamos una referencia a la publicación usando la $ post objeto global.
  • Los metadatos se recuperan de la base de datos y se guardan en la base de datos. $ tes_meta_title y $ tes_meta_description variables, respectivamente. 
  • A continuación, definimos la etiqueta meta que se insertará en la plantilla cabeza elemento.
  • Finalmente, enganchamos la función a wp_head.

Si ha agregado y guardado un título y una descripción en una publicación o página, ver la fuente de la página debe revelar la presencia del título y la etiqueta de descripción de Open Graph junto con la meta descripción utilizada por los motores de búsqueda.

Resumen

En este artículo, creamos un complemento básico de SEO que agrega una meta descripción y etiquetas Open Graph usadas por las redes sociales de los motores de búsqueda en la sección de encabezado de WordPress.

Aprendimos cómo crear metacuadros, campos de formulario, desinfección de los datos antes de guardarlos en la base de datos y recuperar los datos guardados para su uso..
Una asignación adicional para obtener más información sobre este proceso: amplíe este complemento y agregue un campo de palabras clave meta al formulario de cuadro de meta y también inclúyalo entre las etiquetas que se insertan en el encabezado de WordPress.