Una entrada personalizada o Custom Post Type es un nuevo tipo de entrada que aparece en el menú de la izquierda en la página de administración de  WordPress. Nos permite estructurar mejor los distintos tipos de entradas, ya que agrupamos aquellas con características comunes.

Para crear una entrada personalizada se debe usar la función de WordPress register_post_type(). En este ejemplo vamos a llamar a nuestra entrada personalizada ‘Iglesias’.

custom_post_type

$labels = array(
'name' => _x( 'Iglesias', 'Post Type General Name', 'text_domain' ),
'singular_name' => _x( 'Iglesia', 'Post Type Singular Name', 'text_domain' ),
'menu_name' => __( 'Iglesias', 'text_domain' ),
'parent_item_colon' => __( 'Iglesia Padre', 'text_domain' ),
'all_items' => __( 'Iglesias', 'text_domain' ),
'view_item' => __( 'Ver Iglesia', 'text_domain' ),
'add_new_item' => __( 'Añadir Iglesia Nueva', 'text_domain' ),
'add_new' => __( 'Añadir', 'text_domain' ),
'edit_item' => __( 'Editar Iglesia', 'text_domain' ),
'update_item' => __( 'Actualizar', 'text_domain' ),
'search_items' => __( 'Buscar Iglesias', 'text_domain' ),
'not_found' => __( 'Iglesias no encontradas', 'text_domain' ),
'not_found_in_trash' => __( 'Iglesias no encontradas en Papelera', 'text_domain' ),
);

En este primer bloque creamos un array donde indicamos los nombres que aparecerán en pantalla para nuestra entrada personalizada, y que nos permitirá dejar el código listo para traducción en caso de que estemos creando un plugin o theme. Las etiquetas son las siguientes:

  • ‘name’ – Nombre de la entrada en plural.
  • ‘singular name’ – Nombre de la entrada en plural.
  • ‘menu_name’ – Nombre que aparecerá en el menú de administración.
  • ‘parent_item_colon’ – Texto que aparecerá para ir al elemento padre, en caso de que sea jerárquico.
  • ‘all_items’ – Texto que muestra  todas las entradas, aparece en el menú de administración, como submenú del custom post type.
  • ‘view_item’ – Texto para ver una entrada.
  • ‘add_new_item’ – Añadir nuevo elemento, aparece como título cuando estamos agregando una entrada
  • ‘add_new’ – Texto que se muestra en el menú de administración, como submenú del custom post type.
  • ‘edit_item’ – Editar elemento, es el texto que aparece como título cuando estamos editando una entrada.
  • ‘update_item’ – Actualizar elemento, es el texto que aparece en el botón de actualizar cuando estamos editando una entrada.
  • ‘search_items’ – Buscar elementos, aparece al lado del cuadro de búsqueda.
  • ‘not_found’ – Texto que mostrará cuando no encuentre una entrada.
  • ‘not_found_in_trash’ – Texto que mostrará cuando no encuentre una entrada en la papelera.

A continuación, creamos otro array ($args) que contendrá los argumentos:

$rewrite = array(
'slug'                => 'iglesia',
'with_front'          => true,
'pages'               => true,
'feeds'               => true,
);
$args = array(
'label'               => __( 'iglesia', 'text_domain' ),
'description'         => __( 'Información de Iglesias', 'text_domain' ),
'labels'              => $labels,
'supports'            => array( 'title', 'editor', 'comments', 'thumbnail'),
'taxonomies'          => array( 'category', 'post_tag' ),
'hierarchical'        => false,
'public'              => true,
'show_ui'             => true,
'show_in_menu'        => true,
'show_in_nav_menus'   => true,
'show_in_admin_bar'   => true,
'menu_position'       => 5,
'menu_icon'           => site_url().'/wp-content/plugins/my_plugin/images/logo.png',
'can_export'          => true,
'has_archive'         => 'iglesias',
'exclude_from_search' => false,
'query_var'           => 'iglesia',
'rewrite'             => $rewrite,
'capability_type'     => 'post',
);
  • ‘label’ – Nombre del custom post type.
  • ‘description’ – Descripción del el custom post type.
  • ‘labels’ – Aquí le pasamos el array con las etiquetas definidas en el bloque anterior.
  • ‘supports’ – Array con los campos que aparecerán en pantalla al crear o editar una entrada. Puedes poner solo los que te interesen. Algunos de ellos son:
    • ‘title’               – Título
    • ‘editor’          – Contenido
    • ‘author’         – Autor
    • ‘thumbnail’ – Imagen destacada
    • ‘excerpt’       – Extracto
    • ‘comments’ – Comentarios
  • ‘taxonomies’ – Puedes dejarlo tal cual para que te permita agregar categorías y etiquetas a tu entrada, o poner solo lo que te interesa.
  • ‘hierarchical’ – Si tu entrada personalizada será jerárquica o no.
  • ‘public’ – Si las entradas personalizadas serán públicas o no. Por defecto es «false».
  • ‘show_ui’ – Si aparece en el menú de administración. Su valor por defecto es el que aparece en «public».
  • ‘menu_position’ – En qué posición se mostrará el menú, por defecto se mostrará debajo de «Comentarios», pero podeis darle otro valor:
    • 5            – Debajo de Entradas
    • 10          – Debajo de Multimedia
    • 15          – Debajo de Enlaces
    • 20         – Debajo de Páginas
    • 25         – Debajo de Comentarios
    • 60         – Debajo de Apariencia
    • 65         – Debajo de Plugins
    • 70         – Debajo de Usuarios
    • 75         – Debajo de Herramientas
    • 80        – Debajo de Ajustes
  • ‘menu_icon’ – Por defecto, el icono del menú es una chincheta, pero aquí puedes elegir otra imagen. Hay que tener en cuenta que tiene que ser muy pequeña, yo he usado una de 15×15.
  • ‘can_export’ – Si puede ser exportado.
  • ‘has_archive’ – Permite los archivos de entrada personalizada. Puede ser «true» o «false», o poner una cadena de texto para indicar cuál será el enlace.
  • ‘exclude_from_search’ – Si aparecerá en los resultados de búsquedas que se hagan en la web, por defecto es lo contrario de «public».
  • ‘rewrite’ -Le pasamos un array con el formato para los permalinks de las entradas.
  • ‘capability_type’ – Permite establecer quién tendrá permiso para editar este tipo de entradas. Poniendo «post», los permisos serán los mismos que para el resto de entradas.

Por último, metemos todo el código en una función y agregamos el gancho WordPress, aquí se muestra ya el código completo:

function custom_post_type_creator() {
$labels = array(
'name' => _x( 'Iglesias', 'Post Type General Name', 'text_domain' ),
'singular_name' => _x( 'Iglesia', 'Post Type Singular Name', 'text_domain' ),
'menu_name' => __( 'Iglesias', 'text_domain' ),
'parent_item_colon' => __( 'Iglesia Padre', 'text_domain' ),
'all_items' => __( 'Iglesias', 'text_domain' ),
'view_item' => __( 'Ver Iglesia', 'text_domain' ),
'add_new_item' => __( 'Añadir Iglesia Nueva', 'text_domain' ),
'add_new' => __( 'Añadir', 'text_domain' ),
'edit_item' => __( 'Editar Iglesia', 'text_domain' ),
'update_item' => __( 'Actualizar', 'text_domain' ),
'search_items' => __( 'Buscar Iglesias', 'text_domain' ),
'not_found' => __( 'Iglesias no encontradas', 'text_domain' ),
'not_found_in_trash' => __( 'Iglesias no encontradas en Papelera', 'text_domain' ),
);
$rewrite = array(
'slug'                => 'iglesia',
'with_front'          => true,
'pages'               => true,
'feeds'               => true,
);
$args = array(
'label'               => __( 'iglesia', 'text_domain' ),
'description'         => __( 'Información de Iglesias', 'text_domain' ),
'labels'              => $labels,
'supports'            => array( 'title', 'editor', 'comments', 'thumbnail'),
'taxonomies'          => array( 'category', 'post_tag' ),
'hierarchical'        => false,
'public'              => true,
'show_ui'             => true,
'show_in_menu'        => true,
'show_in_nav_menus'   => true,
'show_in_admin_bar'   => true,
'menu_position'       => 5,
'menu_icon'           => site_url().'/wp-content/plugins/my_plugin/images/logo.png',
'can_export'          => true,
'has_archive'         => 'iglesias',
'exclude_from_search' => false,
'query_var'           => 'iglesia',
'rewrite'             => $rewrite,
'capability_type'     => 'post',
);
register_post_type('iglesia', $args);
}
add_action('init', 'custom_post_type_creator', 0);

Para una información más completa podeis consultar el codex de wordpress:

http://codex.wordpress.org/Function_Reference/register_post_type

También podeis ayudaros de este generador de código que simplifica un poco la tarea:

http://generatewp.com/post-type/

Esther Azón

Acerca Esther Azón

Productora de TV & Redactora. Avalada por su cocina, redactora hasta en vacaciones, jugadora serial de Catán, esposa y madre.

Pin It on Pinterest