Creación de tipos de publicaciones altamente personalizados con metaboxes personalizados

En los últimos años, WordPress realmente se ha convertido en un sistema de gestió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 casi cualquier tipo de sitio web.

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

Bueno, buscó 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 a medida que el pedido se actualizaba 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 POSTES PERSONALIZADOS

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 tipos de publicaciones: publicaciones y páginas, pero puede agregar tantas como desee. Incluso puede tener algunos en su sitio de 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. Luego, estos albergarían la información de cada pedido, que se mostrará en la parte frontal, para que sus clientes la vean.

No repasaré el proceso de creación de un tipo de publicación personalizada, porque ya lo cubrí en otro tutorial: Registro de tipos de publicación personalizados.

Lo que quiero discutir aquí es cómo organizar sus datos y mostrarlos de la manera que necesita. Por ejemplo, el editor estándar de WordPress no se prestaba para registrar estos pedidos, porque no tiene áreas individuales para todas las pequeñas piezas de información que formaban el pedido, como el nombre del paciente, el número de pedido y el representante del pedido que se necesitaría. ser llamado tanto en la parte frontal del sitio como en correos electrónicos al representante en el archivo.

Ahí es donde entraron los Meta Boxes personalizados. Los Meta Box personalizados le permiten crear nuevas “ventanas” en su editor para almacenar piezas específicas de información. 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, apagué el editor cuando registré el tipo de publicación personalizada, de modo que tenía el control total de la pantalla de entrada de datos, como verá a continuación.

CAJAS DE META PERSONALIZADAS

Custom Meta Boxes es un script que hace que el proceso de creación de estas metaboxes sea increíblemente fácil. Además, ha tomado algunos de los tipos de campos más complejos (como selectores de color, selectores de fecha y editores WYSIWYG) y ha realizado toda la codificación por usted, de modo que todo lo que tiene que hacer es dictar qué tipo debe ser cada campo, y lo hará aparecer mágicamente.

Incluirlo en su tema o complemento es un proceso muy sencillo. Todo lo que necesita hacer es descargar los archivos del repositorio de GitHub y copiarlos en su propio tema o estructura de carpetas de complementos. Recomiendo poner los archivos en una biblioteca o carpeta de inclusión, 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 está en condiciones de utilizar realmente la funcionalidad que proporciona el script. 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 que permite 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 (estándar o marca de tiempo UNIX)
  • Divisa
  • Área de texto (pequeña y grande)
  • Desplegable
  • Botones de radio (en línea y estándar)
  • Casilla de verificación (única y múltiple)
  • Editor WYSIWYG
  • Selectores de taxonomía (menú desplegable, casillas de verificación o botones de opción)
  • Cargador de archivos
  • Lista de archivos

Solo necesita decidir qué información está tratando de registrar y qué tipo de campo sería mejor en cada caso.

Para demostrarle este script, voy a usar un ejemplo más simple que el sistema de pedidos que mencioné anteriormente, ya que es más complejo. Recientemente escribí un complemento donde estaba creando un sistema de alertas 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, utilicé 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 enriquecida y fácil, como listas con viñetas y formato de texto).

La siguiente función es todo el código que la logra: 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, establecí un prefijo único para los campos personalizados para evitar un conflicto con cualquier otro complemento, 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 establece el título del metabox y la línea 6 establece en qué tipos de publicaciones personalizadas se mostrarán estos metaboxes. Dado que es una matriz, puede incluirlo en tantos tipos de publicaciones como desee, incluidas publicaciones y páginas si lo desea.

La línea 10 inicia la matriz de los 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 qué es el campo, una identificación única para él y una descripción, así como algunas opciones cuando corresponda.

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

¿EL RESULTADO?

Entonces, ¿cómo se ve esto? Bueno, en la ventana del editor, terminarás con algo como esto:

Metaboxes personalizados en acción

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

VISUALIZACIÓN DE LA INFORMACIÓN

La información ahora se almacena en cada publicación de la base de datos. Pero a menos que lo solicitemos, permanecerá en la base de datos y seguirá siendo inútil. Para mostrar la información, necesitamos hacer uso de 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 almacenamos (la prioridad, descripción y resolución).

Priority: ID, 'twpb_alert_priority', true ); ?>

Description

ID, 'twpb_alert_description', true ); ?>

Resolution

ID, 'twpb_alert_resolution', true ); ?>

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

Esto luego producirá un resultado en la parte frontal a lo largo de las líneas de esto:

Visualización de metainformación personalizada

LLEVANDO MÁS ALLÁ

Este ha sido un ejemplo muy simple, pero con solo un poco de imaginación, puede ver lo poderoso que puede ser. Para volver a mi ejemplo original del sistema de seguimiento de pedidos, ese complemento se usó para registrar la información del paciente (nombre, dirección, fecha de nacimiento) y la información del pedido (artículos pedidos, precio, número de pedido, transportista de envío, número de seguimiento, notas de pedido). y documentos de pedido, como facturas). Junto con las notificaciones por correo electrónico, puede ser una herramienta muy completa.

Una vez que comience a desentrañar funciones poderosas como esta que están integradas en WordPress, que pueden parecer un poco abrumadoras al principio, se da cuenta de lo poderosas que pueden ser. Con suerte, herramientas como Custom Meta Boxes lo animarán a sumergirse y comenzar a desarrollar sus propios sitios altamente personalizados.

Publicaciones relacionadas

Botón volver arriba