Manejar un sitio web de una empresa o emprendimiento requiere que se utilicen otros tipos de datos junto a los post normales de WP, en la misma  Base de Datos. Por ejemplo, si nos dedicamos a una editorial o imprenta, necesitaremos los títulos de libros y por otro lado, necesitaremos manejar los autores. En este caso, crearemos un custom post type llamado “Libro” y el autor será tratado como una taxonomía o característica propia del post o entrada.



Crear un Custom Post Type, implica desarrollar en el área de Plugins del sitio, una carpeta con un archivo escrito en php, donde serán definidas todas sus características. Generar este código puede hacerse totalmente a mano, pero también puedes utilizar un servicio llamado GenerateWP, que te va guiando en cada paso: Deberás crear una cuenta y luego seleccionar el servicio que necesites, por ejemplo Post Type Generator

generateWP

 

Siguiendo los pasos, llegaremos a obtener el código, haciendo clic en Update Code. Todo este código lo vamos a copiar y pegar en nuestro nuevo archivo al que llamaremos: libros-post-type.php que estará ubicado en la carpeta Libros dentro de Plugins. ( Luego deberás activarlo en el Escritorio de WP como cualquier otro Plugin)

/* Plugin Name: Libros
Plugin URI: http://venadosoft.com.ar/
Description: Este plugin te agregar un custom post-type llamado libros, con alta, baja, etc
Author: Andrea Cummins
Version: 1.0
Author URI: http://www.venadosoft.com.ar/
*/
if ( ! function_exists('Libros_post_type') ) {
// Register Custom Post Type
function Libros_post_type() {
$labels = array(
'name'                => _x( 'Libros', 'Post Type General Name', 'Libros' ),
'singular_name'       => _x( 'Libro', 'Post Type Singular Name', 'Libros' ),
'menu_name'           => __( 'Libros', 'Libros' ),
'parent_item_colon'   => __( 'Superior:', 'Libros' ),
'all_items'           => __( 'Todos los Libros', 'Libros' ),
'view_item'           => __( 'Ver libro', 'Libros' ),
'add_new_item'        => __( 'Agregar Nuevo Libro', 'Libros' ),
'add_new'             => __( 'Agregar nuevo', 'Libros' ),
'edit_item'           => __( 'Editar libro', 'Libros' ),
'update_item'         => __( 'Actualizar Libro', 'Libros' ),
'search_items'        => __( 'Buscar Libro', 'Libros' ),
'not_found'           => __( 'No encontrado', 'Libros' ),
'not_found_in_trash'  => __( 'No encontrado en la papelera', 'Libros' ),
);
$args = array(
'label'               => __( 'libros', 'Libros' ),
'description'         => __( 'Descripcion Libros', 'Libros' ),
'labels'              => $labels,
'supports'            => array( 'title', 'editor', 'excerpt', 'thumbnail', 'comments', 'trackbacks', ),
'taxonomies'          => array( 'category', 'post_tag' ),
'hierarchical'        => true,
'public'              => true,
'show_ui'             => true,
'show_in_menu'        => true,
'show_in_nav_menus'   => true,
'show_in_admin_bar'   => true,
'menu_position'       => 5,
'can_export'          => true,
'has_archive'         => true,
'exclude_from_search' => false,
'publicly_queryable'  => true,
'capability_type'     => 'page',
);
register_post_type( 'libros', $args );
}
// Hook into the 'init' action
add_action( 'init', 'Libros_post_type', 0 );
}

De esta manera, subiendo el archivo a la carpeta Plugins de nuestro alojamiento web, tendremos activadas las características necesarias para dar de ALTA/BAJA o Modificar datos de Libros en nuestro sitio WEB.
Si luego queremos generar la característica extra Autor, podemos generar una taxonomía que se agregue al mismo:

Vamos de vuelta a generateWP y elegimos el generador de taxonomies.  Al completar todos los campos, obtendremos un código como el siguiente ( que agregaremos al archivo libros-post-type.php que creamos previamente):

if ( ! function_exists( 'autores_taxonomy' ) ) {
// Register Custom Taxonomy
function autores_taxonomy() {
$labels = array(
'name'                       => _x( 'Autores', 'Taxonomy General Name', 'autores' ),
'singular_name'              => _x( 'Autor', 'Taxonomy Singular Name', 'autores' ),
'menu_name'                  => __( 'Autor', 'autores' ),
'all_items'                  => __( 'Todos los autores', 'autores' ),
'parent_item'                => __( 'Superior', 'autores' ),
'parent_item_colon'          => __( 'Superior:', 'autores' ),
'new_item_name'              => __( 'Nuevo autor', 'autores' ),
'add_new_item'               => __( 'Agregar Nuevo Autor', 'autores' ),
'edit_item'                  => __( 'Editar autor', 'autores' ),
'update_item'                => __( 'Actualizar Autor', 'autores' ),
'separate_items_with_commas' => __( 'Separar autores con comas', 'autores' ),
'search_items'               => __( 'Buscar autor', 'autores' ),
'add_or_remove_items'        => __( 'Agregar o eliminar autor', 'autores' ),
'choose_from_most_used'      => __( 'Elegir entre mas utilizados', 'autores' ),
'not_found'                  => __( 'No encontrado', 'autores' ),
);
$args = array(
'labels'                     => $labels,
'hierarchical'               => false,
'public'                     => true,
'show_ui'                    => true,
'show_admin_column'          => true,
'show_in_nav_menus'          => true,
'show_tagcloud'              => true,
);
register_taxonomy( 'autores', array( 'libros' ), $args );
}
// Hook into the 'init' action
add_action( 'init', 'autores_taxonomy', 0 );
}

Enlace | GenerateWP