• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar a la barra lateral principal
  • Saltar al pie de página

Diseñador web WordPress Freelance

Diseño web, WordPress y Marketing Online

  • Inicio
  • Portfolio
  • Blog
  • Contacto

Wordpress · 16 noviembre, 2016

Crear custom post types en WordPress

En éste tutorial vamos a ver cómo crear custom post types en WordPress.

Los custom post types son, como su nombre indica, tipos de entradas personalizadas. Cuando instalamos algún plugin, es común que éste nos cree nuevos custom post types (por ejemplo Woocommerce nos crea el CPT «Productos»).

CPT productos Woocommerce

En WordPress por defecto podemos ver, por ejemplo:

  • Páginas
  • Entradas

Pero si queremos hacer algo un poco personalizado, los CPT son la mejor manera para hacerlo sin tener que cargar la web de plugins. Además tendremos un control total sobre ellos, decidiendo si queremos categorías, etiquetas, imagen destacada, extracto, etc.

Hay varias maneras de crear un custom post type. Puedes crearlo con un plugin, echar un vistazo al codex de WordPress y picar el código, etc…

Yo me voy a decantar por una herramienta que me gusta mucho y que ya he utilizado en otros tutoriales para crear menús personalizados y áreas de widget personalizadas. Estoy hablando de GenerateWP

Entramos en GenerateWP y vamos a Post Type Generator.

Para el ejemplo, vamos a crear un custom post type llamado «Tutoriales«.

1. Pestaña General

  • Function: Ponemos un nombre a la función, por ejemplo crear_cpt_tutoriales.
  • Child Themes: Decimos que sí queremos soporte para child themes.
  • Text Domain: Podemos ponerle el mismo nombre de la función.

General2. Pestaña Post Type

  • Post type Key: Ponemos «tutoriales».
  • Description: Escribimos la descripción que queramos.
  • Name (singular) y Name (plural): Pues eso, el nombre del CPT en singular y en plural.
  • Link to taxonomies: Por defecto nos crea categorías (category) y etiquetas (post_tag). Podemos dejar las 2, elegir la que queramos o quitarlas.
  • Hierarchical: Podemos elegir que se comporte como las páginas (no jerárquico) o como los posts (jerárquico).

Post type

3. Pestaña Labels

Esto no necesita explicación. Simplemente tenemos que rellenar cada campo con la traducción que queramos que aparezca.

 

4. Pestaña Options

Supports: Por defecto el CTP sólo nos muestra título y contenido. Aquí podemos elegir qué es lo que queremos, por ejemplo el extracto o la imagen destacada.

Options

El resto de opciones las podemos dejar tal cual están.

5. Pestaña Visibility

Aquí lo único que vamos a cambiar es el icono que queremos que nos aparezca en el custom post type. Podemos elegirlo aquí

Copiamos la clase del icono que queramos y la pegamos en la opción Admin Sidebar Icon

Admin Sidebar Icon

Una vez que tenemos todas las opciones que queremos, le damos a «Update Code», y el código que nos genera lo pegamos en nuestro functions.php o en nuestro plugin personalizado.
En éste caso el código sería:


if ( ! function_exists('crear_cpt_tutoriales') ) {

// Register Custom Post Type
function crear_cpt_tutoriales() {

$labels = array(
‘name’ => _x( ‘Tutoriales’, ‘Post Type General Name’, ‘crear_cpt_tutoriales’ ),
‘singular_name’ => _x( ‘Tutorial’, ‘Post Type Singular Name’, ‘crear_cpt_tutoriales’ ),
‘menu_name’ => __( ‘Tutoriales’, ‘crear_cpt_tutoriales’ ),
‘name_admin_bar’ => __( ‘Tutoriales’, ‘crear_cpt_tutoriales’ ),
‘archives’ => __( ‘Item Archives’, ‘crear_cpt_tutoriales’ ),
‘parent_item_colon’ => __( ‘Tutorial’, ‘crear_cpt_tutoriales’ ),
‘all_items’ => __( ‘Todos los tutoriales’, ‘crear_cpt_tutoriales’ ),
‘add_new_item’ => __( ‘Añadir nuevo tutorial’, ‘crear_cpt_tutoriales’ ),
‘add_new’ => __( ‘Add New’, ‘crear_cpt_tutoriales’ ),
‘new_item’ => __( ‘New Item’, ‘crear_cpt_tutoriales’ ),
‘edit_item’ => __( ‘Edit Item’, ‘crear_cpt_tutoriales’ ),
‘update_item’ => __( ‘Update Item’, ‘crear_cpt_tutoriales’ ),
‘view_item’ => __( ‘View Item’, ‘crear_cpt_tutoriales’ ),
‘search_items’ => __( ‘Search Item’, ‘crear_cpt_tutoriales’ ),
‘not_found’ => __( ‘Not found’, ‘crear_cpt_tutoriales’ ),
‘not_found_in_trash’ => __( ‘Not found in Trash’, ‘crear_cpt_tutoriales’ ),
‘featured_image’ => __( ‘Featured Image’, ‘crear_cpt_tutoriales’ ),
‘set_featured_image’ => __( ‘Set featured image’, ‘crear_cpt_tutoriales’ ),
‘remove_featured_image’ => __( ‘Remove featured image’, ‘crear_cpt_tutoriales’ ),
‘use_featured_image’ => __( ‘Use as featured image’, ‘crear_cpt_tutoriales’ ),
‘insert_into_item’ => __( ‘Insert into item’, ‘crear_cpt_tutoriales’ ),
‘uploaded_to_this_item’ => __( ‘Uploaded to this item’, ‘crear_cpt_tutoriales’ ),
‘items_list’ => __( ‘Items list’, ‘crear_cpt_tutoriales’ ),
‘items_list_navigation’ => __( ‘Items list navigation’, ‘crear_cpt_tutoriales’ ),
‘filter_items_list’ => __( ‘Filter items list’, ‘crear_cpt_tutoriales’ ),
);
$args = array(
‘label’ => __( ‘Tutorial’, ‘crear_cpt_tutoriales’ ),
‘description’ => __( ‘Descripción del CPT’, ‘crear_cpt_tutoriales’ ),
‘labels’ => $labels,
‘supports’ => array( ),
‘taxonomies’ => array( ‘category’, ‘post_tag’ ),
‘hierarchical’ => false,
‘public’ => true,
‘show_ui’ => true,
‘show_in_menu’ => true,
‘menu_position’ => 5,
‘menu_icon’ => ‘dashicons-wordpress’,
‘show_in_admin_bar’ => true,
‘show_in_nav_menus’ => true,
‘can_export’ => true,
‘has_archive’ => true,
‘exclude_from_search’ => false,
‘publicly_queryable’ => true,
‘capability_type’ => ‘page’,
);
register_post_type( ‘Tutoriales’, $args );

}
add_action( ‘init’, ‘crear_cpt_tutoriales’, 0 );

}

Y ya lo tenemos. Nos tendría que quedar algo así:

Custom Post Types

De esta manera tan sencilla y rápida podremos crear tantos tipos de post personalizados como queramos.

¿Necesitas más ayuda?

Si quieres seguir aprendiendo,necesitas mi ayuda o mis servicios, puedes:

  • Contactar para ver cómo puedo ayudarte.
  • Suscribirte para no perderte ninguna de mis publicaciones.
  • Si quieres comentar, adelante, te responderé encantado.

Muchas gracias por leerme 😉

 

Comparte si crees que le puede servir de ayuda alguien.

Publicado en: Wordpress

Diego Fresno

Diego Fresno López

Diseñador web freelance especializado en WordPress y Genesis.

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

diegofresno.com te informa que los datos de carácter personal que me proporciones rellenando el presente formulario serán tratados por Diego Fresno López como responsable de esta web.
La finalidad de la recogida y tratamiento de los datos personales que te solicito es para gestionar los comentarios que realizas en este blog.
Legitimación: Consentimiento del interesado.El hecho de que no introduzcas los datos de carácter personal que aparecen en el formulario como obligatorios podrá tener como consecuencia que no atender pueda tu solicitud.

  • Como usuario e interesado te informo que los datos que me facilitas estarán ubicados en los servidores de Raiola (proveedor de hosting de diegofresno.com) dentro de la UE. Ver política de privacidad de Raiola.
  • Podrás ejercer tus derechos de acceso, rectificación, limitación y suprimir los datos en hola@diegofresno.com así como el derecho a presentar una reclamación ante una autoridad de control.
    Puedes consultar la información adicional y detallada sobre Protección de Datos en mi página web: https://diegofresno.com, así como consultar mi política de privacidad.

Barra lateral principal

Últimas Entradas

Filtrar spam en Analytics

Cómo filtrar el spam de Analytics

Crear custom post types

Crear custom post types en WordPress

Pasar WordPress a SSL

Añadir áreas de widget personalizadas en WordPress

Añadir un nuevo área de widgets personalizado en WordPress

Importar y exportar widgets en WordPress

Importar y exportar widgets en WordPress

Suscríbete al blog

Footer

diegofresno.com Diseño web y Marketing Online Av. Argentina, 132. Oficina 239 33213 Gijón Asturias

  • Inicio
  • Portfolio
  • Blog
  • Contacto
  • Facebook
  • LinkedIn
  • Aviso Legal
  • Políticas de privacidad
Google ârtner Diego Fresno
DMCA.com Protection Status