Crear Custom Post Types en WordPress

En este artículo veremos cómo crear Custom Post Types en WordPress. Los tipos de entrada personalizados, son tipos de entrada similares a las “Entradas” del blog de WordPress.

Este tipo de entradas personalizadas nos permiten añadir al panel de gestión de WordPress nuevas opciones en el menú para añadir lo que queramos:

  • Productos
  • Eventos
  • Vídeos
  • Proyectos
  • Testimonios

Lo ideal es crear un Plugin específico para esta nueva función, pero también funcionará si lo añadimos al propio “functions.php”. Veámos su estructura básica:

<?php register_post_type($post_type, $args); ?>
  • $post_type: Es el nombre del tipo de entrada. Debe contener letras minúsculas, sin espacios y su longitud mínima es de 20 caracteres.
  • $args: Matriz de argumentos que definen el tipo de entrada.

Veamos un ejemplo real:

add_action( 'init', 'proyecto' );

function proyecto() {
	$labels = array(
	'name' => _x( 'Proyectos', 'post type general name' ),
        'singular_name' => _x( 'Proyecto', 'post type singular name' ),
        'add_new' => _x( 'Añadir nuevo', 'book' ),
        'add_new_item' => __( 'Añadir nuevo Proyecto' ),
        'edit_item' => __( 'Editar Proyecto' ),
        'new_item' => __( 'Nuevo Proyecto' ),
        'view_item' => __( 'Ver Proyecto' ),
        'search_items' => __( 'Buscar Proyecto' ),
        'not_found' =>  __( 'No se han encontrado Proyectos' ),
        'not_found_in_trash' => __( 'No se han encontrado Proyectosen 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,
        'has_archive' => true,
        'rewrite' => array( 'slug' => 'proyecto', 'with_front' => false ),
        'capability_type' => 'post',
        'hierarchical' => true,
        'menu_position' => null,
        'supports' => array( 'title', 'editor',  'thumbnail',   'custom-fields' )
    );
 
    register_post_type( 'proyecto', $args ); /* Registramos y a funcionar */
}

En la primera parte del código le pasamos las diferentes etiquetas para que en nuestro gestor salgan los textos tal y como queremos.

En la segunda parte definimos las diferentes opciones para nuestro tipo de entrada personalizado.

public
Indica si el tipo de entrada está disponible en el estritorio administrativo. Por defecto el false.

show_ui
Se indica si se crea o no una IU predeterminada en el escritorio de WordPress. Por defecto acepta el valor definido por el argumento public.

publicly_queryable
Indica si el tipo de entrada se puede consultar de forma pública en su sitio web. Si se establece en false, todas las consultas del usuario devolverá error 404.

exclude_from_search
Pemite excluir este tipo de entrada de los resultados de búsqueda de WordPress.

hierarchical
Define si el tipo de entreada es jerarquico. Un tipo de entrada jerarquico permite tener una estructura de árbol para el contenido de la entrada.

has_archive
Permite tener una página de archivo.

menu_position
Permite establecer la posición en menú de administración de WordPress.

capability_type
Una matriz de las prestaciones de este tipo de entrada. El valor por defecto es ‘post’.

query_var
Este argumento establece la variable de consulta para este tipo de entrada. El valor por defecto es $post_type.

rewrite
Este valor crea los enlaces permanentes exclusivos para este tipo de entrada.

supports
Permite indicar que funciones vamos a necesitar en la edición e inserción de una entrada.

De esta manera estamos creando un tipo de entrada personalizado llamado ‘proyecto’.