En este tutorial os vamos a contar el proceso que seguimos para crear los CPT’s personalizados en WordPress en Unionn Estudio Creativo.
En el diseño web con WordPress existen muchas opciones para crear Custom Post Types, lo más sencillo suele ser utilizar plugins como Custom post type ui o bien generarlo mediante generatewp.com
Ambas soluciones cumplen su cometido pero cierto es que no es una buena práctica a la hora de desarrollar ya que la opción del plugin genera «lock in» y no puedes desactivarlo sin que se pierda la funcionalidad y la opción de generateWP es un poco tedioso tener que rellenar todos los campos manualmente.
Desde hace un tiempo en Unionn utilizamos «aText» para crear textos enlatados para responder a preguntas que siempre tienen las misma respuesta. Pero desde hace un tiempo le hemos dado la vuelta y lo utilizamos para generar snippets de código que nos agilizan enormemente el trabajo.
A continuación verás un video en el que te contamos todo el proceso.
<?php
/*
Plugin Name: IGB Menus
Plugin URI: https://unionn.es
Description: CPT Menus
Version: 0.0.1
Author: Iván Grau Blasco
Author URI: https://unionn.es
License: GPL 2+
*/
// Crear CPT Personalizado
add_action( ‘init’, ‘igb_menus’ );
// Registramos el CPT
function igb_menus() {
$labels = array(
‘name’ => _x( ‘Menus’, ‘post type general name’, ‘igb-plugin-menu’ ),
‘singular_name’ => _x( ‘Menú’, ‘post type singular name’, ‘igb-plugin-menu’ ),
‘menu_name’ => _x( ‘Menus’, ‘admin menu’, ‘igb-plugin-menu’ ),
‘name_admin_bar’ => _x( ‘Menu’, ‘add new on admin bar’, ‘igb-plugin-menu’ ),
‘add_new’ => _x( ‘Añadir Nuevo’, ‘Menu’, ‘igb-plugin-menu’ ),
‘add_new_item’ => __( ‘Añadir nuevo Menu’, ‘igb-plugin-menu’ ),
‘new_item’ => __( ‘Nuevo Menu’, ‘igb-plugin-menu’ ),
‘edit_item’ => __( ‘Editar Menu’, ‘igb-plugin-menu’ ),
‘view_item’ => __( ‘Ver Menu’, ‘igb-plugin-menu’ ),
‘all_items’ => __( ‘Todos los Menus’, ‘igb-plugin-menu’ ),
‘search_items’ => __( ‘Buscar Menus’, ‘igb-plugin-menu’ ),
‘parent_item_colon’ => __( ‘Parent Menus:’, ‘igb-plugin-menu’ ),
‘not_found’ => __( ‘No se han encontrado Menus.’, ‘igb-plugin-menu’ ),
‘not_found_in_trash’ => __( ‘No se han encontrado Menus en la papelera.’, ‘igb-plugin-menu’ )
);
$args = array(
‘labels’ => $labels,
‘description’ => __( ‘Description.’, ‘igb-plugin-menu’ ),
‘public’ => true,
‘publicly_queryable’ => true,
‘taxonomies’ => array( »,» ),
‘show_ui’ => true,
‘show_in_menu’ => true,
‘query_var’ => true,
‘rewrite’ => array( ‘slug’ => ‘menus’ ),
‘capability_type’ => ‘post’,
‘has_archive’ => true,
‘hierarchical’ => false,
‘menu_position’ => null,
‘show_in_rest’ => true,
‘supports’ => array( ‘title’, ‘editor’, ‘author’, ‘thumbnail’, ‘excerpt’, ‘comments’,’trackbacks’,’revisions’, ‘custom fields’ , ‘page-attributes’, ‘ post-formats’ , ‘genesis-cut-archives-settings’ , ‘genesis-set’ , ‘genesis-scripts’ , ‘genesis-layouts’ , ‘genesis-red-author’)
);
register_post_type( ‘igb_menus’, $args );
}
if ( ! function_exists( ‘igb_menus_tipos’ ) ) {
// Register Custom Taxonomy
function igb_menus_tipos() {
$labels = array(
‘name’ => _x( ‘Tipos de Menus’, ‘Taxonomy General Name’, ‘igb_tax_tipos’ ),
‘singular_name’ => _x( ‘Tipo de Menú’, ‘Taxonomy Singular Name’, ‘igb_tax_tipos’ ),
‘menu_name’ => __( ‘Tipos de Menus’, ‘igb_tax_tipos’ ),
‘all_items’ => __( ‘Todos los’, ‘igb_tax_tipos’ ),
‘parent_item’ => __( ‘Parent’, ‘igb_tax_tipos’ ),
‘parent_item_colon’ => __( ‘Parent’, ‘igb_tax_tipos’ ),
‘new_item_name’ => __( ‘Nuevo’, ‘igb_tax_tipos’ ),
‘add_new_item’ => __( ‘Añadir nuevo’, ‘igb_tax_tipos’ ),
‘edit_item’ => __( ‘Editar’, ‘igb_tax_tipos’ ),
‘update_item’ => __( ‘Actualizar’, ‘igb_tax_tipos’ ),
‘view_item’ => __( ‘Ver’, ‘igb_tax_tipos’ ),
‘separate_items_with_commas’ => __( ‘Separar con comas’, ‘igb_tax_tipos’ ),
‘add_or_remove_items’ => __( ‘Añadir o eliminar’, ‘igb_tax_tipos’ ),
‘choose_from_most_used’ => __( ‘Elegir de los mas usados’, ‘igb_tax_tipos’ ),
‘popular_items’ => __( ‘Populares’, ‘igb_tax_tipos’ ),
‘search_items’ => __( ‘Buscar’, ‘igb_tax_tipos’ ),
‘not_found’ => __( ‘No se encuentra’, ‘igb_tax_tipos’ ),
‘no_terms’ => __( ‘No hay’, ‘igb_tax_tipos’ ),
‘items_list’ => __( ‘Lista de’, ‘igb_tax_tipos’ ),
‘items_list_navigation’ => __( ‘Lista de Navegación de’, ‘igb_tax_tipos’ ),
);
$capabilities = array(
‘manage_terms’ => ‘manage_categories’,
‘edit_terms’ => ‘manage_categories’,
‘delete_terms’ => ‘manage_categories’,
‘assign_terms’ => ‘edit_posts’,
);
$args = array(
‘labels’ => $labels,
‘hierarchical’ => true,
‘public’ => true,
‘show_ui’ => true,
‘show_admin_column’ => true,
‘show_in_nav_menus’ => true,
‘show_tagcloud’ => true,
‘show_in_rest’ => true,
);
register_taxonomy( ‘igb_menus_tipos’, array( ‘igb_menus’ ), $args );
}
add_action( ‘init’, ‘igb_menus_tipos’, 0 );
}
Cómo has visto este tutorial es un poco más técnico pero para que no te pierdas te vamos a hacer un breve resumen de los pasos a seguir para crear tu CPT.
1- Crear una carpeta para el plugin en tu instalación de WordPress.
2- Crear un documento PHP con el nombre del plugin
3- Añadir el código para generar el plugin.
4- Añadir el código para generar el CPT
5- Añadir el código para generar la taxonomía.
Bueno espero que si has llegado hasta aquí te haya servido y hayas aprendido a realizar un Custom Post Type por ti sól@ y sin ayuda de plugins. No olvides suscribirte para ver más tutoriales cómo este.
Para cualquier duda, consulta o comentario puedes contactar con nosotros. Estamos aquí para ayudarte.
Si te inscribes, recibirás contenido exclusivo, material para tus proyectos y todos los videotutoriales en tu correo.
2018 © Unionn Estudio Creativo | Aviso Legal · Sobre Nosotros · Blog · Tutoriales · Portfolio · Afiliados