fbpx

Diseño Web: Cómo crear un CPT en sólo 2 minutos con sus taxonomías

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.

Código para crear un plugin:

<?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+
*/

Código para crear un CPT

// 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 );
}

Crear una taxonomía personalizada

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 );

}

Desarrollo de CPT y Taxonomías

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.

 

¿TIENES DUDAS?

Para cualquier duda, consulta o comentario puedes contactar con nosotros. Estamos aquí para ayudarte.