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

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!





