Tech Academy > Cursos > Plugins de WordPress > 02. ¿Qué son los Custom Post Type de WordPress?

02. ¿Qué son los Custom Post Type de WordPress?

En este vídeo explicaremos qué son los Custom Post Types (CPT) y por qué son importantes en el mundo de WordPress. Recomendaremos algunos de los plugins más populares para crearlos de manera visual, a golpe de clic. Luego introduciremos más en detalle uno de los plugins más usados para realizar Custom Post Types llamado "Pods – Custom Content Types and Fields". Instalaremos el plugin en nuestro proyecto de WordPress y revisaremos las opciones principales para su configuración.

Avanzado
00:08:42
Miguel Ángel Álvarez

Información complementaria

  • Webinar: SEO - Palabras clave

    Te mostramos cómo buscar y seleccionar las palabras clave que te ayudarán a mejorar el posicionamiento de tu web en los buscadores como Google.


    Ir a webinars

  • Guía: El delegado de protección de datos en la empresa

    Esta figura se está convirtiendo en fundamental en empresas, sobre todo de cierto tamaño. Descubre si la tuya necesita uno y qué características debe poseer.


    Descargar

  • Curso: WordPress Básico

    Descubre los conocimientos básicos sobre la optimización en buscadores que necesitas para mejorar la relación con Google de tu sitio web.


    Ver curso

¿Qué son los Custom Post Type?

Los Custom Post Type son básicamente entradas personalizadas en WordPress, y esta es una funcionalidad muy útil para personalizar al máximo nuestra página web. ¿Quieres saber cómo hacerlas? En este post, te enseñamos y te facilitamos todo un listado de plugins de WordPress que nos permitirán personalizar las entradas sin meternos en programación.

Por defecto, WordPress no permite hacer este tipo de entradas personalizadas, lo que nos obliga a utilizar plugins o tocar el código para crearlas y mostrarlas. Aunque existen plugins que nos pueden resolver el problema, siempre está bien saber lo que hacen, por si en algún momento tenemos que tocar el código.

¿Cómo crear una entrada personalizada a mano?

Si queremos crear a mano una entrada personalizada tendremos que irnos al archivo functions.php de nuestro theme de WordPress. Ahí es donde tendremos que añadir el siguiente código. A modo de ejemplo, vamos a realizar uno de entrada propia, llamada Libros:


// La función no será utilizada antes del 'init'.
add_action( 'init', 'my_custom_init' );

function my_custom_init() {
		$labels = array(
		'name' => _x( 'Libros', 'post type general name' ),
		'singular_name' => _x( 'Libro', 'post type singular name' ),
		'add_new' => _x( 'Añadir nuevo', 'book' ),
		'add_new_item' => __( 'Añadir nuevo Libro' ),
		'edit_item' => __( 'Editar Libro' ),
		'new_item' => __( 'Nuevo Libro' ),
		'view_item' => __( 'Ver Libro' ),
		'search_items' => __( 'Buscar Libros' ),
		'not_found' =>  __( 'No se han encontrado Libros' ),
		'not_found_in_trash' => __( 'No se han encontrado Libros en la papelera' ),
		'parent_item_colon' => ''
	);

	// Creamos un array para $args
	$args = array( 'labels' => $labels,
		'public' => true,
		'publicly_queryable' => true,
		'show_ui' => true,
		'query_var' => true,
		'rewrite' => true,
		'capability_type' => 'post',
		'hierarchical' => false,
		'menu_position' => null,
		'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' )
	);

	register_post_type( 'libro', $args ); 
}

Este código no es demasiado complicado y tan solo necesitaremos cambiar los textos para que aparezca de la manera que a nosotros nos interesa.

Con esto, ya tendremos una entrada personalizada creada y ya presente en nuestro escritorio.

Clasificaciones Custom Post Type

Si nos fijamos en la entrada, veremos que no tenemos taxonomía para libros. Esto quiere decir que no tenemos ningún tipo de clasificación, ni géneros ni autores.

Para crear las taxonomías, necesitaremos el siguiente código:


// Lo enganchamos en la acción init y llamamos a la función create_book_taxonomies() cuando arranque
add_action( 'init', 'create_book_taxonomies', 0 );

// Creamos dos taxonomías, género y autor para el custom post type "libro"
function create_book_taxonomies() {
	// Añadimos nueva taxonomía y la hacemos jerárquica (como las categorías por defecto)
	$labels = array(
	'name' => _x( 'Géneros', 'taxonomy general name' ),
	'singular_name' => _x( 'Género', 'taxonomy singular name' ),
	'search_items' =>  __( 'Buscar por Género' ),
	'all_items' => __( 'Todos los Géneros' ),
	'parent_item' => __( 'Género padre' ),
	'parent_item_colon' => __( 'Género padre:' ),
	'edit_item' => __( 'Editar Género' ),
	'update_item' => __( 'Actualizar Género' ),
	'add_new_item' => __( 'Añadir nuevo Género' ),
	'new_item_name' => __( 'Nombre del nuevo Género' ),
);
register_taxonomy( 'genero', array( 'libro' ), array(
	'hierarchical' => true,
	'labels' => $labels, /* Aquí es donde se utiliza la variable $labels que hemos creado arriba*/
	'show_ui' => true,
	'query_var' => true,
	'rewrite' => array( 'slug' => 'genero' ),
));
// Añado otra taxonomía, esta vez no es jerárquica, como las etiquetas.
$labels = array(
	'name' => _x( 'Escritores', 'taxonomy general name' ),
	'singular_name' => _x( 'Escritor', 'taxonomy singular name' ),
	'search_items' =>  __( 'Buscar Escritores' ),
	'popular_items' => __( 'Escritores populares' ),
	'all_items' => __( 'Todos los escritores' ),
	'parent_item' => null,
	'parent_item_colon' => null,
	'edit_item' => __( 'Editar Escritor' ),
	'update_item' => __( 'Actualizar Escritor' ),
	'add_new_item' => __( 'Añadir nuevo Escritor' ),
	'new_item_name' => __( 'Nombre del nuevo Escritor' ),
	'separate_items_with_commas' => __( 'Separar Escritores por comas' ),
	'add_or_remove_items' => __( 'Añadir o eliminar Escritores' ),
	'choose_from_most_used' => __( 'Escoger entre los Escritores más utilizados' )
);

register_taxonomy( 'escritor', 'libro', array(
	'hierarchical' => false,
	'labels' => $labels, 
	'show_ui' => true,
	'query_var' => true,
	'rewrite' => array( 'slug' => 'escritor' ),
));
}

En este código, hacemos referencia a la entrada personalizada a la que queremos añadir las taxonomías, recordando que se debe añadir al archivo functions.php de nuestro theme.

Plugins para Custom Post Type

A continuación, os dejamos una selección de plugins que crean estos tipos de entradas personalizadas.

  • Custom Post Type UI: Muy intuitivo y de sencillo manejo.
  • Types: Además de crear entradas personalizadas, nos permite crear taxonomías y campos individualizados.
  • Pods: Un plugin muy completo que, además de realizar todo lo anteriormente citado en los otros plugins, cuenta con plantillas y otras opciones.
¿Podemos ayudarte?