¿Alguna vez has tratado de construir metaboxes en WordPress? Es un desastre, no solo para principiantes sino también para desarrolladores avanzados de WordPress. Afortunadamente para la comunidad de WordPress, la comunidad misma puede ofrecer soluciones elegantes para este tipo de problemas desordenados. CMB2 es uno de ellos..
En esta parte de la serie "Caja de herramientas del desarrollador de Smart WordPress", veremos CMB2, una amplia biblioteca para desarrollar metaboxes y formularios personalizados en WordPress..
Ya que este no es un tutorial sobre cómo crear metaboxes personalizados, no voy a enseñarte cómo hacerlo mediante el uso de la funcionalidad central, pero te daré un par de enlaces útiles. En cambio, voy a repasar la rutina mundana de esto:
Creando el metabox: Es cierto que esta parte es esencial e incluso CMB2 usa una forma similar de hacerlo: tienes que crear el metabox personalizado usando el add_meta_box ()
función ... dentro de una función que engancha a la add_meta_boxes
acción. No demasiado fácil, no demasiado difícil, pero entre los dos.
Crea los campos para mostrar en el metabox: En esta parte, debe crear una función separada (a la que también debe referirse en el add_meta_box ()
función) y escribir HTML de vainilla en ella, como div
s y etiqueta
s y entrada
s, con el fin de mostrar sus campos de formulario, el cual no funcionará a menos que enlace el HTML con PHP complicado. Las entradas de texto están bien, pero ¿crear menús desplegables o casillas de verificación? Prepárese para confundirse. (Ni siquiera me refiero a la carga de archivos y los selectores de color). Oh, se olvidó de usar wp_nonce_field ()
¿por seguridad? Lástima, tu código nunca funcionará..
Desinfecte y guarde los valores de campo: Sí. Para hacer que el formulario almacene los datos, debe usar otra función para verificar un montón de cosas, desinfectar los datos y guardar los valores en su metabox personalizado. Y tienes que enganchar esa función a la save_post
acción. ordenado.
Si quieres hacerlo "a la manera del núcleo" y gastar horas en crear un par de metaboxes, bueno, bueno para ti, tomar el camino correcto. Pero, por supuesto, podría llegar un momento en el que simplemente no pueda usar marcos de ayuda como CMB2. En ese caso, puede consultar este tutorial de SitePoint por Narayan Prusty o esta extensa serie de tutoriales por Tom McFarlin en Tuts + Code.
¿Y si te dijera que puedes crear metaboxes personalizados creando una función que se engancha a una acción y usando funciones muy inteligentes que hacen todo el trabajo duro de crear el HTML y unir mágicamente todo junto? Y créeme, no estoy exagerando ni un poquito.!
Con la ayuda de CMB2, podrá crear metaboxes personalizados en una fracción del tiempo que dedicaría a hacerlo "de la manera principal".
CMB2 viene en dos formas: en la forma de complemento y en la forma de marco. Si va a utilizar CMB2 en proyectos que no se lanzarán para una comunidad, le sugiero que use el complemento, ya que actualizar el complemento CMB2 sería mucho más fácil y no tendrá que incluir los archivos. del motor CMB2. Pero si va a lanzar su proyecto a una comunidad, es mejor que integre CMB2 en el proyecto descargando los archivos de GitHub, colocándolos en la carpeta de su proyecto y utilizando las siguientes líneas:
Por supuesto, tenga en cuenta que tiene que editar las líneas de arriba para apuntar a CMB2 init.php
expediente.
Antes de crear nuestro primer metabox, necesitamos crear nuestra única función que se enganche a la propia CMB2 cmb2_init
acción:
Después de eso, crear el metabox es tan fácil como crear una nueva variable:
'test_metabox', 'title' => 'Test Metabox', 'object_types' => array ('page', 'post', 'customposttype'), // post type 'context' => 'normal', // ' normal ',' advanced 'o' side "priority '=>' high ', //' high ',' core ',' default 'or' low" show_names '=> true, // muestra los nombres de los campos a la izquierda' cmb_styles '=> false, // false para deshabilitar la hoja de estilo CMB' closed '=> true, // mantiene el metabox cerrado de forma predeterminada)); ?>
Después de crear nuestro primer metabox personalizado, es hora de hacerlo útil llenándolo con los "campos" que proporciona CMB2. Y hacerlo es tan simple como ejecutar una función con la variable metabox que acabamos de crear:
add_field (array ('name' => 'Test Title', 'desc' => 'Esta es una descripción del título', 'type' => 'title', 'id' => 'wiki_test_title')); // entrada de correo electrónico $ cmb-> add_field (array ('name' => 'Test Text Email', 'id' => 'wiki_test_email', 'type' => 'text_email',)); // cargador de archivos $ cmb-> add_field (array ('name' => 'Test File', 'desc' => 'Cargar una imagen o ingresar una URL.', 'id' => 'wiki_test_image', 'tipo' => 'archivo', // Oculta opcionalmente la entrada de texto para la url: 'opciones' => array ('url' => falso,),)); // ¿Recuerdas cuando dije que hacer un selector de color sería muy difícil cuando usas funciones básicas? $ cmb-> add_field (array ('nombre' => 'Selector de color de prueba', 'id' => 'wiki_test_colorpicker', 'type' => 'colorpicker', 'default' => '#ffffff',)); ?>
Hay más de 30 tipos de campos provistos por CMB2, incluyendo entradas de texto regulares, editores WYSIWYG, selectores de fecha, selectores de color, cargadores de archivos e incluso selectores de taxonomía. Para obtener una lista completa de los tipos de campo, visite esta página de Wiki de CMB2.
Crear metaboxes personalizados totalmente funcionales es increíble, pero CMB2 no se detiene ahí. Hay un montón de cosas que puedes hacer con CMB2:
mostrar en
Filtros y condicionantes muestran u ocultan tus metaboxes..Para obtener más información sobre los superpoderes de CMB2 como estos, hay algunas páginas que puede consultar:
No se puede negar que adherirse al núcleo de WordPress mientras se construyen cosas no siempre es tan simple como parece. Por lo tanto, utilizar marcos de ayuda como CMB2 acelerará nuestros procesos de desarrollo. Y creo que a pesar de que CMB2 es tan impresionante como lo es ahora, tiene mucho más espacio para mejorar (no solo en el área de los metabox personalizados, sino también en otras direcciones), así que vigilo esto proyecto si yo fuera tu.
Nos vemos en la siguiente parte, donde analizaremos WP-CLI, una herramienta de WordPress única en su tipo que nos brinda la oportunidad de administrar nuestras instalaciones de WordPress a través de la línea de comandos..