Agregar campos personalizados con Antonella Framework y CMB2 (Actualizado)

Como ya sabeis en anotaciones anteriores. Antonella Framework sirve para realizar plugins de forma fácil, intuitiva y acepta paquete de terceros.

Vamos a crear un nuevo post-type y a agregar campos personalizados gracias a CMB2 un modulo php para poder agregar metaboxes y metadata a los post de froma amigable para el usuario.

Lo primero que debemos hacer es crear nuetsro proyecto:

[code lang=»shell»]

git clone https://bitbucket.org/cehojac/antonella-framework-for-wp.git nuevo-post-type

[/code]

y antes de ejecutar composer vamos a agregar al módulo CMB2 dentro de Antonella Framework. Accedemos a nuestro archivo composer.json que se encuentra en la raíz de nuestro proyecto y en la parte de «require» colocamos esto

[code lang=javascript]

«require»: {
«webdevstudios/cmb2»: «dev-master»,

«composer/installers»: «v1.0.12»

},

«extra»: {
«installer-paths»: {
«vendor/{$name}/»: [«webdevstudios/cmb2»]
}
}

[/code]

Luego ejecutamos composer

[code lang=shell]composer install[/code]

Luego cambiaremos nuestro namespace para el proyecto

[code lang=shell]php antonella namespace CHCMB2 [/code]

Y por último agregamos el llamado del plugin CMB2 al nuestro con una simple línea de código en el archivo antonella-framework.php. debajo de la línea 28

[code lang=php]

$loader = require __DIR__ . ‘/vendor/autoload.php’;  //Línea 28

$cmb2 = require_once __DIR__ . ‘/vendor/cmb2/init.php’;

[/code]

Configurando nuestro plugin

Vamos a nuestro archivo config.php (está en la carpeta src de nuestro proyecto) y vamos al apartado de acciones

[code lang=php]

/**
* add_action data functions
* @input array
* @example [‘body_class’,’CHCMB2::function’,10,2]
* @example [‘body_class’,[‘CHCMB2′,’function’],10,2]
*/
public $add_action=[];

[/code]

y colocamos la instrucción para llamar a nuestra función que llevara todo el CMB2

[code lang=php]

/**
* add_action data functions
* @input array
* @example [‘body_class’,’CHCMB2::function’,10,2]
* @example [‘body_class’,[‘CHCMB2′,’function’],10,2]
*/
public $add_action=[
[‘cmb2_admin_init’,[‘CHCMB2MetaBoxesController’,’index’]]
];

[/code]

Luego vamos al apartado post-types y lo rellenamos para crear un post de prueba

[code lang=php]

public $post_types =[
[
‘singular’=>’prueba’,
‘plural’=>’pruebas’,
‘slug’=>’prueba-ch’,
‘translate’=>false,
‘position’=>4,
‘taxonomy’=>[‘category’],
],

[/code]

Ahora vamos a la consola y creamos nuestro controlador

[code lang=shell] php antonella make MetaBoxesController [/code]

Antonella creará un archivo llamado MetaBoxesController.php en la carpera src con todo lo necesario para empezar.

Abrimos nuestro archivo y en la segunda linea agregamos esto:

[code lang=php] use CHCMB2Config; [/code]

y luego insertamos dentro de la clase nuestra función index que hemos indicado previamente en el config

[code lang=php]
public function index()
{
$config= new Config;
$cmb = new_cmb2_box( array(
‘id’=>’test_metabox’,
‘title’=> __( ‘Test Metabox’, ‘cmb2’ ),
‘object_types’=>array( ‘prueba-ch’, ), // Post type
‘context’=>’normal’,
‘priority’=>’high’,
‘show_names’=>true, // Show field names on the left
// ‘cmb_styles’ => false, // false to disable the CMB stylesheet
// ‘closed’ => true, // Keep the metabox closed by default
) );
$cmb->add_field( array(
‘name’=> __( ‘Test Text’, ‘cmb2’ ),
‘desc’=> __( ‘field description (optional)’, ‘cmb2’ ),
‘id’=> $config->plugin_prefix .’text’,
‘type’=>’text’,
‘show_on_cb’=>’cmb2_hide_if_no_cats’, // function should return a bool value
// ‘sanitization_cb’ => ‘my_custom_sanitization’, // custom sanitization callback parameter
// ‘escape_cb’ => ‘my_custom_escaping’, // custom escaping callback parameter
// ‘on_front’ => false, // Optionally designate a field to wp-admin only
// ‘repeatable’ => true,
) );

// URL text field
$cmb->add_field( array(
‘name’=> __( ‘Website URL’, ‘cmb2’ ),
‘desc’=> __( ‘field description (optional)’, ‘cmb2’ ),
‘id’=> $config->plugin_prefix .’url’,
‘type’=>’text_url’,
// ‘protocols’ => array(‘http’, ‘https’, ‘ftp’, ‘ftps’, ‘mailto’, ‘news’, ‘irc’, ‘gopher’, ‘nntp’, ‘feed’, ‘telnet’), // Array of allowed protocols
// ‘repeatable’ => true,
) );

// Email text field
$cmb->add_field( array(
‘name’=> __( ‘Test Text Email’, ‘cmb2’ ),
‘desc’=> __( ‘field description (optional)’, ‘cmb2’ ),
‘id’=> $config->plugin_prefix .’email’,
‘type’=>’text_email’,
// ‘repeatable’ => true,
) );
}

[/code]

 

Y ya está. sólo queda modificar el archivo antonella-framework.php para renombrar tu plugin y ejecutar en la consola:

[code lang =shell]php antonella makeup[/code]

Esto creará el archivo .zip con tu plugin. puedes subirlo y verás que ha creado un nuevo post-type llamado pruebas y verás que cuando creas uno nuevo aparecerá los campos creados con la función index.

 

 

en la función index del archivo MetaBoxesController.php puedes agregar más opciones para agregar campos gracias a CMB2. para más información de los campos que puedes agregar puedes usar el link de aqui  https://github.com/CMB2/CMB2/wiki/Basic-Usage

[vc_raw_js]JTNDJTIxLS1IdWJTcG90JTIwQ2FsbC10by1BY3Rpb24lMjBDb2RlJTIwLS0lM0UlM0NzcGFuJTIwY2xhc3MlM0QlMjJocy1jdGEtd3JhcHBlciUyMiUyMGlkJTNEJTIyaHMtY3RhLXdyYXBwZXItOGI0MmRiMmUtMDE3Mi00OTlkLWI5ZmMtOTI0MGI5YzZmYzczJTIyJTNFJTNDc3BhbiUyMGNsYXNzJTNEJTIyaHMtY3RhLW5vZGUlMjBocy1jdGEtOGI0MmRiMmUtMDE3Mi00OTlkLWI5ZmMtOTI0MGI5YzZmYzczJTIyJTIwaWQlM0QlMjJocy1jdGEtOGI0MmRiMmUtMDE3Mi00OTlkLWI5ZmMtOTI0MGI5YzZmYzczJTIyJTNFJTNDJTIxLS0lNUJpZiUyMGx0ZSUyMElFJTIwOCU1RCUzRSUzQ2RpdiUyMGlkJTNEJTIyaHMtY3RhLWllLWVsZW1lbnQlMjIlM0UlM0MlMkZkaXYlM0UlM0MlMjElNUJlbmRpZiU1RC0tJTNFJTNDYSUyMGhyZWYlM0QlMjJodHRwcyUzQSUyRiUyRmN0YS1yZWRpcmVjdC5odWJzcG90LmNvbSUyRmN0YSUyRnJlZGlyZWN0JTJGNDMzMjg4OCUyRjhiNDJkYjJlLTAxNzItNDk5ZC1iOWZjLTkyNDBiOWM2ZmM3MyUyMiUyMCUyMHRhcmdldCUzRCUyMl9ibGFuayUyMiUyMCUzRSUzQ2ltZyUyMGNsYXNzJTNEJTIyaHMtY3RhLWltZyUyMiUyMGlkJTNEJTIyaHMtY3RhLWltZy04YjQyZGIyZS0wMTcyLTQ5OWQtYjlmYy05MjQwYjljNmZjNzMlMjIlMjBzdHlsZSUzRCUyMmJvcmRlci13aWR0aCUzQTBweCUzQiUyMiUyMHNyYyUzRCUyMmh0dHBzJTNBJTJGJTJGbm8tY2FjaGUuaHVic3BvdC5jb20lMkZjdGElMkZkZWZhdWx0JTJGNDMzMjg4OCUyRjhiNDJkYjJlLTAxNzItNDk5ZC1iOWZjLTkyNDBiOWM2ZmM3My5wbmclMjIlMjAlMjBhbHQlM0QlMjJEZXNjYXJnYSUyMEFudG9uZWxsYSUyMEZyYW1ld29yayUyMiUyRiUzRSUzQyUyRmElM0UlM0MlMkZzcGFuJTNFJTNDc2NyaXB0JTIwY2hhcnNldCUzRCUyMnV0Zi04JTIyJTIwc3JjJTNEJTIyaHR0cHMlM0ElMkYlMkZqcy5oc2N0YS5uZXQlMkZjdGElMkZjdXJyZW50LmpzJTIyJTNFJTNDJTJGc2NyaXB0JTNFJTNDc2NyaXB0JTIwdHlwZSUzRCUyMnRleHQlMkZqYXZhc2NyaXB0JTIyJTNFJTIwaGJzcHQuY3RhLmxvYWQlMjg0MzMyODg4JTJDJTIwJTI3OGI0MmRiMmUtMDE3Mi00OTlkLWI5ZmMtOTI0MGI5YzZmYzczJTI3JTJDJTIwJTdCJTdEJTI5JTNCJTIwJTNDJTJGc2NyaXB0JTNFJTNDJTJGc3BhbiUzRSUzQyUyMS0tJTIwZW5kJTIwSHViU3BvdCUyMENhbGwtdG8tQWN0aW9uJTIwQ29kZSUyMC0tJTNF[/vc_raw_js]
[vc_custom_heading text=»¿Tienes dudas?» font_container=»tag:p|font_size:32px|text_align:center|color:%23ffffff» use_theme_fonts=»yes» css=»%7B%22default%22%3A%7B%22color%22%3A%22%23ffffff%22%2C%22font-size%22%3A%2232px%22%7D%7D»]

En Carlos Herrera podemos echarte una mano para crear tu web inmobiliaria. Puedes llamarnos al 942 03 03 30, hablarnos por nuestro chat (abajo en la esquina derecha) o rellenar este formulario. ¡Tú decides!

[vc_raw_js]JTNDJTIxLS0lNUJpZiUyMGx0ZSUyMElFJTIwOCU1RCUzRSUwQSUzQ3NjcmlwdCUyMGNoYXJzZXQlM0QlMjJ1dGYtOCUyMiUyMHR5cGUlM0QlMjJ0ZXh0JTJGamF2YXNjcmlwdCUyMiUyMHNyYyUzRCUyMiUyRiUyRmpzLmhzZm9ybXMubmV0JTJGZm9ybXMlMkZ2Mi1sZWdhY3kuanMlMjIlM0UlM0MlMkZzY3JpcHQlM0UlMEElM0MlMjElNUJlbmRpZiU1RC0tJTNFJTBBJTNDc2NyaXB0JTIwY2hhcnNldCUzRCUyMnV0Zi04JTIyJTIwdHlwZSUzRCUyMnRleHQlMkZqYXZhc2NyaXB0JTIyJTIwc3JjJTNEJTIyJTJGJTJGanMuaHNmb3Jtcy5uZXQlMkZmb3JtcyUyRnYyLmpzJTIyJTNFJTNDJTJGc2NyaXB0JTNFJTBBJTNDc2NyaXB0JTNFJTBBJTIwJTIwaGJzcHQuZm9ybXMuY3JlYXRlJTI4JTdCJTBBJTA5cG9ydGFsSWQlM0ElMjAlMjI0MzMyODg4JTIyJTJDJTBBJTA5Zm9ybUlkJTNBJTIwJTIyZDc1MjhjMTgtZjJjYi00YWU0LTlmMGMtYTczNDkwNzExY2Q5JTIyJTJDJTBBJTA5Y3NzJTNBJTIwJTIyJTIyJTBBJTdEJTI5JTNCJTBBJTNDJTJGc2NyaXB0JTNF[/vc_raw_js]

¿Cansado de Agencias que Prometen Mucho y Entregan Poco?

Somos un equipo senior con más de 10 años en diseño, desarrollo y estrategia digital. Sin juniors gestionando tu proyecto. Sin presupuestos inflados. Solo ejecución precisa, en plazo.

Entrada anterior
Crear una web inmobiliaria: consejos para no morir en el intento
Entrada siguiente
¿WordPress.com ha sido hackeada?. Aqui los detalles
ARTÍCULOS RELACIONADOS
¿Quieres tranquilidad y rendimiento para tu sitio WordPress?

Optimiza tu web con nuestro servicio de mantenimiento especializado. Deja de preocuparte por caídas, errores y malfuncionamientos.

Ir al contenido