Custom Meta Boxes in action

Tipos de publicaciones altamente personalizadas con meta-cajas personalizadas

En los últimos años, WordPress realmente se ha convertido en un sistema de administración de contenido completo, y es cuando realmente liberas parte de su funcionalidad que te das cuenta de que WordPress se puede usar para impulsar prácticamente cualquier tipo de sitio web.

Mi momento eureka llegó cuando un cliente me pidió que les construyera un sistema de seguimiento de pedidos. Históricamente, recibía pedidos de equipos médicos de representantes y elaboraba todos sus documentos manualmente. Luego pasaba todo el día en el teléfono, respondiendo llamadas de representantes para realizar nuevos pedidos o verificar el estado de un pedido existente.

Bueno, él estaba buscando cambiar todo eso creando un sitio web donde pudiera ingresar todos sus pedidos, y sus clientes pudieran verificar su estado a voluntad, e incluso recibir actualizaciones por correo electrónico cuando se realizó el pedido actualizado con nueva información. La idea era que entonces tendría más tiempo para hacer crecer su negocio, en lugar de pasar todo el día hablando por teléfono haciendo trabajo administrativo.

TIPOS DE POSICIONES PERSONALIZADAS

La respuesta a su problema radica en el poder de los tipos de publicaciones personalizadas. Los sitios estándar de WordPress tienen dos tipos de publicaciones: publicaciones y páginas, pero puede agregar tantas como desee. Incluso puede tenerlos en su sitio desde temas o complementos que admitan cosas como eventos, listados de bienes raíces, productos o controles deslizantes.

En este caso, necesitaba crear un tipo de publicación personalizada para sus pedidos. Estos luego albergarían la información de cada pedido, que se mostrará en el front-end, para que la vean sus clientes.

No volveré a repasar el proceso de creación de un tipo de publicación personalizada, ya que ya lo cubrí en otro tutorial: Guardar tipos de publicaciones personalizadas.

Lo que quiero discutir aquí es cómo organizar sus datos y mostrarlos como desee. Por ejemplo, el editor estándar de WordPress no se prestaba para registrar estos pedidos, ya que no tenía áreas individuales para toda la pequeña información que componía el pedido, como el nombre del paciente, el número de pedido y el representante del pedido que necesitaría ser llamado tanto en el front-end del sitio como en correos electrónicos al representante en el archivo.

Aquí es donde entran en juego los cuadros de metadatos personalizados. Los cuadros de metadatos personalizados le permiten crear nuevas “ventanas” en su editor para almacenar información específica. Entonces, si bien el editor de publicaciones tiene un cuadro enorme para el contenido de su publicación, es posible que no lo necesite para su tipo de publicación personalizada, como yo no lo hice con el tipo de publicación personalizada de mis pedidos. Como tal, desactivé el editor cuando guardé el tipo de publicación personalizada, de modo que tuve control total sobre la pantalla de ingreso de datos, como verá a continuación.

CAJAS META PERSONALIZADAS

Cajas meta personalizadas es un script que hace que el proceso de creación de estas metacajas sea increíblemente fácil. Además, tomó algunos de los tipos de campos más complejos (como selectores de color, selectores de fecha y editores WYSIWYG) e hizo toda la codificación por usted, por lo que todo lo que tiene que hacer es dictar el tipo de cada campo, y lo hará aparecen como por arte de magia.

Incluirlo en su tema o complemento es un proceso muy simple. Todo lo que tiene que hacer es descargar los archivos del Repositorio de GitHub y cópielos en su propio tema o estructura de carpetas de complementos. Recomiendo poner los archivos en una biblioteca o incluir una carpeta, para una mejor organización. En mis complementos, subo todos los archivos a / wp-content / plugins / my-plugin / includes / metabox /.

Una vez que todos los archivos y carpetas se hayan cargado en la ubicación elegida, todo lo que necesita hacer para “activarlos” y hacerlos disponibles para su uso es incluir init.php desde su complemento. Por ejemplo, en mi ejemplo, la siguiente función se incluyó en el archivo del complemento principal para llamar a init.php en la carpeta / includes / metabox /:

function be_initialize_cmb_meta_boxes() {
	if ( !class_exists( 'cmb_Meta_Box' ) ) {
		require_once( 'includes/metabox/init.php' );
	}
}

add_action( 'init', 'be_initialize_cmb_meta_boxes', 9999 );

Ahora puede utilizar realmente la funcionalidad proporcionada por el script. El archivo example-functions.php es un gran lugar para comenzar a aprender cómo funciona el script. Proporciona un ejemplo de la sintaxis necesaria para incluir cada tipo de campo permitido por el script. Los tipos de campos que puede elegir incluyen:

  • Título (para organizar sus metacajas en el panel de control)
  • Texto (pequeño, mediano y grande)
  • Selector de fecha (marca de tiempo estándar o UNIX)
  • Lema
  • Cuadro de texto (pequeño y grande)
  • Menú de desplazamiento
  • Botones de radio (en línea y estándar)
  • Casilla de verificación (única y múltiple)
  • Editor WYSIWYG
  • Selectores de taxonomía (lista desplegable, casillas de verificación o botones de opción)
  • Descargador de archivos
  • Lista de archivos

Solo tienes que decidir qué información estás intentando registrar y qué tipo de campo sería mejor en cada caso.

Para demostrarle este script, usaré un ejemplo que es más simple que el sistema de comando que mencioné anteriormente porque es más complejo. Recientemente escribí un complemento donde creé un sistema de alerta simple, donde el administrador podía especificar el título de la alerta, su prioridad, cuál era la descripción de la alerta y cómo resolverla.

Para manejar esto, usé el título de la publicación para el título de la alerta, los botones de radio en línea para establecer la prioridad y los editores WYSIWYG para escribir la descripción y la resolución (lo que permite una edición rica y fácil, como listas con viñetas y formato de texto).

La siguiente función es todo el código que logra esto: notarás que sigue el formato del archivo example-functions.php. Describiré cada parte del código después:

function twpb_alerts_metaboxes( $meta_boxes ) {
	$prefix = 'twpb_alert_'; // Prefix for all fields
	$meta_boxes[] = array(
		'id' => 'alert_metabox',
		'title' => 'Alert Information',
		'pages' => array('twpb_alerts'), // post type
		'context' => 'normal',
		'priority' => 'high',
		'show_names' => true, // Show field names on the left
		'fields' => array(
			array(
				'name'    => 'Priority',
				'desc'    => '',
				'id'      => $prefix . 'priority',
				'type'    => 'radio_inline',
				'options' => array(
					array( 'name' => 'High', 'value' => 'high', ),
					array( 'name' => 'Medium', 'value' => 'medium', ),
					array( 'name' => 'Low', 'value' => 'low', ),
				),
			),
			array(
				'name'    => 'Description of issue',
				'desc'    => 'Enter a description of what the issue is.',
				'id'      => $prefix . 'description',
				'type'    => 'wysiwyg',
				'options' => array(	'textarea_rows' => 5, ),
			),
			array(
				'name'    => 'Proposed resolution',
				'desc'    => 'Inform users how they can resolve the issue.',
				'id'      => $prefix . 'resolution',
				'type'    => 'wysiwyg',
				'options' => array(	'textarea_rows' => 5, ),
			),
		),
	);

	return $meta_boxes;
}
add_filter( 'cmb_meta_boxes', 'twpb_alerts_metaboxes' );

En la línea 2 definí un prefijo único para los campos personalizados para evitar conflictos con otros complementos, y en la línea 4 le di una identificación única al metabox que aparecerá en el tipo de publicación personalizada en el tablero. La línea 5 define el título del metabox y la línea 6 define los tipos de publicaciones personalizadas en las que mostrar estos metaboxes. Dado que se trata de una tabla, puede incluirla en tantos tipos de publicaciones como desee, incluidas publicaciones y páginas si lo desea.

La línea 10 inicia la matriz de campos que quiero crear. En este ejemplo, solo hay tres campos (líneas 11-21, 22-28 y 29-35). Cada campo incluye información básica sobre el campo, un identificador único para el campo y una descripción, así como algunas opciones, si corresponde.

Luego, la línea 39 muestra los metaboxes y la línea 41 se conecta al script que descargamos originalmente para que funcione.

¿EL RESULTADO?

Entonces, ¿qué es lo que parece? Bueno, en la ventana del editor terminarás con algo como esto:

Metaboxes personalizados en acción

Así que ahora hemos establecido cómo crear las metaboxes y utilizar los diferentes tipos de campos para recopilar la información necesaria. Ahora tenemos que mostrarlo en la parte frontal.

MOSTRAR INFORMACIÓN

La información ahora se almacena para cada publicación en la base de datos. Pero a menos que lo usemos, permanecerá en la base de datos y será inútil. Para mostrar la información, necesitamos usar la función get_post_meta, que recupera el meta de la publicación para una publicación determinada de la base de datos.

Para tomar este ejemplo simple, podemos usar la función get_post_meta en tres instancias separadas para extraer cada pieza de información que hemos almacenado (prioridad, descripción y resolución).

<h2>Priority: <?php echo get_post_meta( $post->ID, 'twpb_alert_priority', true ); ?></h2>
<h3>Description</h3>
	<?php echo get_post_meta( $post->ID, 'twpb_alert_description', true ); ?>
<h3>Resolution</h3>
	<?php echo get_post_meta( $post->ID, 'twpb_alert_resolution', true ); ?>

En cada caso, pasamos el ID de publicación y el ID único de cada elemento de metadatos que queremos recuperar (recuerda que los definimos en la función anterior).

Esto luego dará un resultado en el front-end a lo largo de las líneas de esto:

Ver metadatos personalizados

IR MÁS LEJOS

Fue un ejemplo muy simple, pero con solo un poco de imaginación puedes ver lo poderoso que puede ser. Volviendo a mi ejemplo original del sistema de seguimiento de pedidos, este complemento se utilizó para registrar información del paciente (nombre, dirección, fecha de nacimiento) e información del pedido (artículos pedidos, precio, número de pedido, transportista, número de seguimiento, notas de pedido y pedido documentos, como facturas). Asociado a Notificaciónes de Correo Electrónico, puede ser una herramienta muy completa.

Una vez que comienzas a desentrañar funciones poderosas como esta integradas en WordPress, que pueden parecer un poco abrumadoras al principio, te das cuenta de lo poderosas que pueden ser. Ojalá herramientas como Cajas meta personalizadas lo alentará a sumergirse y comenzar a desarrollar sus propios sitios altamente personalizados.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Ir arriba