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..
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');
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:
En este punto, debería estar viendo el cuadro de meta en la pantalla de publicación y página.
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:
save_post
puede activarse en otros momentos y también verificar que el nonce previamente establecido en tes_mb_function
es válida.$ 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..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.update_post_meta
.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..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');
$ post
objeto global.$ tes_meta_title
y $ tes_meta_description
variables, respectivamente. cabeza
elemento.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.
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.