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

Descarga Antonella Framework

¿Tienes dudas?

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!

Entrada anterior
Crear una web inmobiliaria: consejos para no morir en el intento
Entrada siguiente
¿WordPress.com ha sido hackeada?. Aqui los detalles
Menú