WordPress – Cómo incluir otro tipo de post

Actualmente, en wordpress, hay varios tipos de posts por defecto (todos ellos se almacenarán en la tabla wp_post), que son:

  • Post (Post Type: ‘post’).
  • Página (Post Type: ‘page’)
  • Adjunto (Post Type: ‘attachment’)
  • Revision (Post Type: ‘revision’)
  • Menú de navegación (Post Type: ‘nav_menu_item’)

Pero a veces necesitaremos crear otro nuevo tipo de post para posteriormente mostrarlo en el front de otra forma, bien a través de una template que contenga todos los nuevos posts, o que contenga solo uno,…

El código para crear un nuevo tipo de post (llamado por ejemplo curso) es el siguiente. Lo introduje en un archivo functions.php que tenía el template que estoy utilizando:

add_action( 'init', 'create_post_type' );
function create_post_type() {
  register_post_type( 'curso',
    array(
      'labels' => array(
        'name' => __( 'Cursos' ),
        'singular_name' => __( 'Curso' )
      ),
      'public' => true,
      'menu_icon' => 'dashicons-feedback',
      'rewrite' => array( 'slug' => 'curso' )
    )
  );
}

Notas:

  • He incluido el icono feedback, aunque no sería necesario ningún icono.
  • Slug también es opcional, está por si quiero posteriormente acceder a través de una url amigable a los contenidos.

Y simplemente con ese código ya tendremos acceso en la administración a la creación de ese tipo de post.

Hay más información de lo que se puede hacer con register_post_type en este link.