Los tipos de publicaciones personalizadas son uno de los elementos clave que debe comprender si desea crear sitios de WordPress flexibles y de calidad profesional.

Lo que hacen los tipos de publicaciones personalizadas es que le permite agregar su propio tipo de datos; puede ser un artículo, una canción, una película o miles de otras cosas. Los tipos de publicaciones personalizadas le permiten categorizar sus datos de acuerdo con sus necesidades individuales, lo que a su vez le permite tener un mayor control sobre cómo se comporta su sitio.

En este artículo, lo guiaremos en la creación de un tipo de publicación de película personalizada para una base de datos de películas.

¿Por qué usar tipos de publicaciones personalizadas?

Para crear un sitio web de película, debemos configurar una base de datos. Hacerlo sin tipos de publicaciones personalizadas sería extremadamente complicado y podría entrar en conflicto con nuestra instalación existente de WordPress. Sin embargo, nuestro tipo de publicación personalizada tendrá su propio menú de administración y página de edición personalizada. Si quisiéramos, podríamos incluso agregar taxonomías personalizadas a la página con los nombres y las propiedades que se ajustan al proyecto.

Los tipos de publicaciones personalizadas son los que llevan a WordPress desde una plataforma de blogs a un CMS completo. Nos dan la libertad de configurar nuestro sitio web de películas sin ningún truco desagradable.

Creando nuestro tipo de publicación de película

En este artículo diseñaré todo el código necesario para crear un tipo de publicación personalizado, y luego lo revisaremos línea por línea para que pueda saber qué hace cada parte y personalizarla según sus necesidades.

Aquí está el código completo que se agrega a su archivo functions.php :

add_action( 'init', 'register_movie' );function register_movie() {$labels = array('name' => 'Movies','singular_name' => 'Movie','add_new' => 'Add New','add_new_item' => 'Add New Movie','edit_item' => 'Edit Movie','new_item' => 'New Movie','view_item' => 'View Movie','search_items' => 'Search Movies','not_found' => 'No movies found','not_found_in_trash' => 'No movies found in Trash','menu_name' => 'Movies',);$args = array('labels' => $labels,'hierarchical' => false,'description' => 'Here you will add all the movies for the database','supports' => array( 'title', 'editor', 'thumbnail' ),'taxonomies' => array( 'genre', 'movies', 'year' ),'public' => true,'show_ui' => true,'show_in_menu' => true,'menu_position' => 5,//'menu_icon' => the image link here,'show_in_nav_menus' => true,'publicly_queryable' => true,'exclude_from_search' => false,'has_archive' => true,'query_var' => true,'can_export' => true,'rewrite' => true,'capability_type' => 'post');register_post_type( 'movie', $args );}

Como puede ver, un trozo grande de código se usa para crear un tipo de publicación personalizado, pero si lo entiende, podrá obtener este código y adaptarlo a sus proyectos. En la primera línea enganchamos la función con nuestro tipo de publicación personalizado al init, lo que significa que nuestra función se activará cuando WordPress lo haga, de modo que siempre lo tengamos en nuestro panel:

add_action( 'init', 'register_movie' );

Las etiquetas

En la línea siguiente, comenzamos declarando el nombre de nuestra función y una variable con todas las etiquetas que se asociarán con nuestro tipo de publicación de película para que todo se pueda personalizar.

Lo primero que declaramos en las etiquetas es el nombre de nuestro tipo de publicación personalizada, en forma plural y singular:

'name' => 'Movies','singular_name' => 'Movie',

En las próximas dos líneas tenemos que especificar nuestro texto Agregar nuevo (si deseamos cambiarlo) y luego configuramos Agregar nueva película para que cuando agreguemos una nueva película tengamos una experiencia personalizada en lugar de agregar una película y tener una título que dice 'Agregar nueva publicación'.

'add_new' => 'Add New','add_new_item' => 'Add New Movie',

Después de las etiquetas para crear una nueva película, debemos establecer las etiquetas para editar, el nuevo texto del elemento (de manera predeterminada es Nueva publicación / Nueva página) y también debemos configurar la vista del texto de la publicación:

'edit_item' => 'Edit Movie','new_item' => 'New Movie','view_item' => 'View Movie',

Ahora en las etiquetas pasamos a las capacidades de búsqueda en el administrador de wordpress y nuestras etiquetas para eso. Necesitamos establecer etiquetas para cuando buscamos películas, cuando no se encuentran resultados, y también cuando no se encuentran resultados en la papelera:

'search_items' => 'Search Movies','not_found' => 'No movies found','not_found_in_trash' => 'No movies found in Trash',

La última etiqueta habla por sí misma, aquí tenemos que colocar el nombre que queremos que tenga el tipo de publicación personalizada en la interfaz de usuario del menú, en este caso solo nos quedamos con "Películas":

'menu_name' => 'Movies',);

Los argumentos

Ahora tenemos que pasar a nuestros argumentos, para eso he creado otra variable que contendrá todos los argumentos, lo llamé args.

El primer argumento que pide son las etiquetas y todo lo que tenemos que hacer es señalar la variable de etiquetas que acabamos de examinar, de esta manera:

$args = array('labels' => $labels,

En la siguiente línea, debemos establecer si nuestro tipo de publicación será jerárquica, como las páginas o no (como las publicaciones). En mi caso, no quiero que las películas sean jerárquicas, así que lo configuré en falso. La siguiente línea es solo una descripción opcional del tipo de publicación.

'hierarchical' => false,'description' => 'Here you will add all the movies for the database',

La siguiente línea es importante; aquí tenemos que especificar qué tipo de publicación personalizada será compatible, qué campos tendrá. Las opciones para este campo son:

  • 'título'
  • 'editor'
  • 'autor'
  • 'miniatura'
  • 'extracto'
  • 'trackbacks'
  • 'Campos Personalizados'
  • 'comentarios'
  • 'revisiones'
  • 'atributos de página'
  • 'post-formatos'

En mi caso y para mi tipo de publicación, solo quiero que sea compatible con el título, el editor WYSIWYG , una miniatura y comentarios, y para hacerlo necesito agregar una matriz en esta línea, así:

'supports' => array( 'title', 'editor', 'thumbnail','comments' ),

En la siguiente línea, debemos especificar qué taxonomías usará y, como crearemos taxonomías personalizadas, esas serán las que se agregarán en esta línea:

'taxonomies' => array( 'genre', 'actors', 'year' ),

Las siguientes tres líneas tienen que ver con la visibilidad del tipo de publicación en el área de administración y todo lo que hago es establecer todo eso en verdadero:

'public' => true,'show_ui' => true,'show_in_menu' => true,

A continuación, nos movemos a la posición del menú en el que debe aparecer el tipo de publicación. Aquí también tenemos muchas opciones para elegir:

  • 5 - Debajo de las publicaciones
  • 10 - Debajo de los medios
  • 15 - Enlaces abajo
  • 20 - Debajo de las páginas
  • 25 - Debajo de los comentarios
  • 60 - Debajo del primer separador
  • 65 - Debajo de los complementos
  • 70 - Debajo de los usuarios
  • 75 - debajo de las herramientas
  • 80 - Debajo de la configuración
  • 100 - Debajo del segundo separador

En mi caso, quería que las películas aparecieran inmediatamente después de las publicaciones, así que configuré su posición de menú en 5, de esta forma:

'menu_position' => 5,

En la siguiente línea nos ocupamos del ícono, podemos configurar nuestro propio ícono o dejarlo en blanco y obtendremos el ícono de las publicaciones en su lugar, la línea después de eso se ocupa de lo que queramos que aparezca este tipo de publicación para la selección en nuestros menús .

'menu_icon' => //the image link here,'show_in_nav_menus' => true,

En las siguientes 3 líneas, agregamos las capacidades del tipo de publicación; primero establecemos si queremos que se consulte el tipo de publicación en el front-end, luego decidimos si queremos que los resultados de tipo de publicación se excluyan de las búsquedas y finalmente decidimos si queremos un archivo para el tipo de publicación de películas:

'publicly_queryable' => true,'exclude_from_search' => false,'has_archive' => true,

En la línea siguiente establecemos la variable de consulta para nuestro tipo de publicación y esto definirá cómo se verá la URL, para esta opción tenemos tres parámetros posibles: podemos establecerlo en verdadero y luego podemos llegar a la película usando /? = nombre_de_película; podemos establecerlo en una cadena para que la película en la URL sea reemplazada por lo que queramos, como "mostrar" y tendremos que usar /? show = name_of_movie para llegar a la misma película; la última opción es configurarlo en falso y de esta manera imposibilita el acceso a una película con la consulta_var. En mi caso, y con esta última opción en mente, configuré mi var de consulta en verdadero para que podamos llegar a ella con la query_var de la película:

'query_var' => true,

En la siguiente línea decidimos si queremos que las películas sean exportables y luego elegimos la babosa para este tipo de publicación, en mi caso simplemente me quedé con "verdadero" para tener "película" como la babosa pero puedes elegir cualquier cuerda para ser la slug y realmente tienes muchas opciones, este parámetro es extenso.

'can_export' => true,'rewrite' => true,

La última línea de nuestros argumentos es donde establecemos el tipo de capacidad de nuestra publicación y como quiero que tenga exactamente los mismos que las publicaciones normales, simplemente le di el valor de publicación, como esta:

   'capability_type' => 'post');

Nuestras etiquetas y argumentos están hechos, todo lo que tenemos que hacer ahora es registrar nuestro tipo de publicación y la función register_post_type toma dos parámetros, el primero es el nombre de nuestro tipo de publicación personalizada (esto tiene un máximo de 20 letras y sin letras mayúsculas) o espacios) y el segundo es los argumentos para el tipo de publicación y en este solo colocaremos nuestra variable args:

    register_post_type( 'movie', $args );}

Nuestro tipo de publicación se crea y es completamente funcional y todo lo que necesita para que aparezca en sus páginas es algo de magia wp_query .

Ultimas palabras

Espero que puedas ver por qué tanta gente usa tipos de publicaciones personalizadas en WordPress.

Este artículo está destinado a darle una comprensión del proceso de creación de un tipo de publicación personalizado, y le dará un punto de partida para crear sus propios tipos increíbles de publicaciones personalizadas.

Imagen / miniatura destacada, imagen personalizada por ATOMIC Hot Links, a través de Flickr.