Tutoriales de WordPress de Confianza, cuando más los necesitas.
Guía para Principiantes de WordPress
Copa WPB
25 Millones+
Sitios web que usan nuestros plugins
16+
Años de experiencia en WordPress
3000+
Tutoriales de WordPress de expertos

Cómo usar tipos de publicación personalizados en WordPress 3.0

Desde la versión 2.9, WordPress ha introducido la capacidad de usar tipos de publicación personalizados. Ahora, con la versión 3.0, las cosas van un poco más allá con la opción de crear paneles para tus tipos de publicación personalizados. En este tutorial, te mostraremos cómo implementar tipos de publicación personalizados en tu sitio en tu sitio de WordPress.

Creación de tipos de publicación personalizados – Uso de plugins

A partir de la versión 3.0, WordPress no tiene una interfaz de usuario (UI) integrada para crear tipos de publicación personalizados. Solo hay dos opciones que podemos usar para crear tipos de publicación personalizados: plugins o codificarlos directamente en el archivo functions.php de tu tema. Primero, veamos cómo podemos usar plugins para crear tipos de publicación personalizados.

Interfaz de tipo de publicación personalizado

UI de Tipos de Publicaciones Personalizadas

Custom Post Type UI es un plugin desarrollado por Brad Williams de WebDevStudios que te permite crear fácilmente tipos de publicación y taxonomías personalizadas. Una de las características más geniales de este plugin es que genera un código para crear tipos de publicación personalizados, para que luego puedas pegarlo en el archivo functions.php de tu tema. Una de las peculiaridades de este plugin es la incapacidad de compartir taxonomías entre todos tus tipos de publicación.

Generar código para Tipos de Publicaciones Personalizadas

Desde el panel de Custom Post Type UI, haz clic en "Agregar nuevo".

Botón Añadir Nuevo para UI de Tipo de Publicación Personalizada

A continuación, se te presentan algunas opciones para completar. El “Nombre del tipo de publicación” es lo que WordPress utilizará para consultar todas las publicaciones de dicho post_type. La “Etiqueta” es lo que se mostrará en la barra lateral de tu Panel, al igual que el menú regular de “Publicaciones”. Si expandes las “Ver opciones avanzadas”, verás algunas opciones más que puedes configurar. La mayoría se explican por sí mismas, como “Público” y “Mostrar interfaz de usuario”. La primera, cuando se establece en verdadero, permite que el menú del tipo de publicación personalizado se muestre en la barra lateral, y la otra (mostrar interfaz de usuario), cuando se establece en verdadero, genera el panel del menú.

“Reescribir” es lo que permite que el tipo de publicación personalizado utilice URLs de WordPress amigables para SEO (Enlaces permanentes). El “Slug de reescritura personalizado” se puede establecer en lo que desees. WordPress usará este slug para generar los enlaces permanentes. Entonces, si tenemos ejemplo.com con un slug de reescritura personalizado de “películas”, tu enlace permanente del tipo de publicación personalizado se vería como ejemplo.com/peliculas

La función “Variable de consulta” de WordPress te permite consultar las publicaciones de tu tipo de publicación personalizado. Entonces, si usamos el ejemplo dado anteriormente, para acceder a una publicación con el título, Mi Primera Publicación de Película, que está escrita bajo el post_type Películas, podemos ingresar ejemplo.com/?peliculas=mi-primera-publicacion-de-pelicula. Así que la variable de consulta se ve así: ?nombretipodepublicacion

Finalmente, puedes elegir las diferentes características compatibles con tu tipo de publicación personalizado, como miniaturas/imagen destacada y extractos.

Opciones de UI de Tipos de Publicaciones Personalizadas

Creación de tipos de publicación personalizados – Uso del archivo Functions.php

Codificar Tipos de Publicaciones Personalizadas

Si prefieres usar tipos de publicación personalizados sin un plugin, simplemente agrega el siguiente código al archivo functions.php de tu tema:

// Creates Movies post type
register_post_type('movies', array(
'label' => 'Movies',
'public' => true,
'show_ui' => true,
'capability_type' => 'post',
'hierarchical' => false,
'rewrite' => array('slug' => 'movies'),
'query_var' => true,
'supports' => array(
'title',
'editor',
'excerpt',
'trackbacks',
'custom-fields',
'comments',
'revisions',
'thumbnail',
'author',
'page-attributes',)
) );

Analicemos el código.

register_post_type( $post_type, $args ): Esta función acepta dos parámetros, $post_type o el nombre del tipo de publicación, y $args, una matriz de argumentos.

etiqueta: Nombre plural dado al tipo de publicación que se muestra en la barra lateral del panel de administración.

público: verdadero/falso. Permite que la interfaz de usuario administrativa se pueble con publicaciones de este tipo.

mostrar_ui: verdadero/falso. Muestra u oculta una interfaz de usuario predeterminada para administrar este tipo de publicación.

tipo_capacidad: Predeterminado: post Tipo de publicación a utilizar para verificar las capacidades de lectura, edición y eliminación.

jerárquico: Si el tipo de publicación es jerárquico.

reescribir: verdadero/falso. Predeterminado: verdadero Si se ingresa el argumento slug, el nombre del slug se antepone a las publicaciones.

variable_consulta: verdadero/falso Establece el nombre del tipo de publicación como una variable de consulta.

soporta: Predeterminado: título y autor Establece diferentes características de soporte que permite el tipo de publicación.

Visita el WordPress Codex para más información sobre register_post_type().

Mostrar publicaciones de tipo de publicación personalizado

Para mostrar las publicaciones de tu tipo de publicación personalizado, agrega los siguientes códigos en el loop. Reemplaza "name" con el nombre de tu tipo de publicación. Nota: No tienes que agregar los tipos de publicación personalizados en tu archivo index.php. Puedes crear una página personalizada de WordPress y ejecutar la siguiente consulta dentro de el Loop.

$query = new WP_Query( 'post_type=name' );

Para mostrar publicaciones de más de un tipo de publicación, cambia el código anterior por el siguiente. Cambia "movies" por el nombre de tu tipo de publicación personalizado.

$query = new WP_Query( array(
	'post_type' => array( 'post', 'movies' )
) );

El código anterior mostrará todas las publicaciones del tipo de publicación regular (post) y del tipo de publicación personalizado, "movies".

Eso es todo. Esperamos que este tutorial te haya sido útil y no olvides publicar tus preguntas en los comentarios.

Descargo de responsabilidad: Nuestro contenido es compatible con el lector. Esto significa que si haces clic en algunos de nuestros enlaces, podemos ganar una comisión. Consulta cómo se financia WPBeginner, por qué es importante y cómo puedes apoyarnos. Aquí está nuestro proceso editorial.

El Kit de herramientas definitivo para WordPress

Obtén acceso GRATUITO a nuestro kit de herramientas: ¡una colección de productos y recursos relacionados con WordPress que todo profesional debería tener!

Interacciones del lector

58 CommentsLeave a Reply

  1. He creado dos tipos de publicación personalizados, pero solo el primero se muestra en mi página. He agregado esto
    $query = new WP_Query( array( ‘post_type’ => array( ‘post’, ‘featured’, ‘latest’ )
    ) );

    dentro de mi archivo de loop, pero nada. ¿cómo puedo resolver esto?

  2. ¡Primero, excelente artículo! Estoy trabajando en la implementación de tipos de publicación personalizados a través de código. Cabe destacar que la documentación actual de WordPress (http://codex.wordpress.org/Function_Reference/query_posts) especifica que la función query_posts generalmente no debe usarse y que el hook pre_get_posts se usa para modificar las consultas.

    “Se recomienda encarecidamente que utilice el filtro pre_get_posts en su lugar, y modifique la consulta principal comprobando is_main_query”

    De nuevo, excelente artículo, gracias por compartir.

    Salud.

  3. ¡GUAU… para un novato que usa WP para administrar su sitio web, esto no es material para principiantes de ninguna manera! Probablemente tendré que contactar a algún desarrollador de WP para configurar mi página personalizada que quiero.

  4. query_posts( ‘post_type=movies’);
    ?>

    No puedo hacer que esto funcione en la plantilla de página de mi tema secundario twentyeleven, ¿dónde debería ponerlo para obtener una página de películas? En realidad, lo que realmente quiero son los extractos. Gracias Mark

  5. Al usar este plugin y agregar el código anterior a loop.php, perderás el control sobre las categorías... mi tipo de publicación personalizado se agrega a todas las categorías... ¿alguna ayuda?

    • @muntzdesigns Es por eso que tienes múltiples bucles... tu bucle principal de blog, archive.php, category.php, etc. En un sitio diseñado a medida, tendrás que utilizar eso para que esto funcione correctamente.

      • @wpbeginner@muntzdesigns Entonces, ¿simplemente agrego el código anterior a todos los archivos? (loop.php, archive.php y category.php). Gracias.

        • @muntzdesigns No. Solo agregas el código en las páginas principales. El problema que tenías era que los tipos de publicación personalizados se agregaban a todas las categorías... Necesitas agregar el código anterior solo al bucle principal. Luego crea un nuevo bucle para el archivo de categoría, el archivo de taxonomía, el archivo de autor...

  6. ¿Qué hace exactamente el Identificador de Tipo de Contenido en el plugin CMS Press? Estoy buscando una manera de anteponer la barra diagonal de la categoría al tipo de publicación personalizado (ejemplo.com/categoria/tipo_publicacion/nombre_publicacion), pero al usar %category%/%identifier%/%postname% en Identificador de Tipo de Contenido se transforma automáticamente de esta manera: %categoryidentifierpostname

  7. Este es un gran tutorial para crear una publicación personalizada en WordPress. Los pasos se dan con detalles que uno podría seguir fácilmente. ¡Esto es de gran, gran ayuda!

  8. Vaya, tenía todo lo de CMS Press funcionando, pero no podía averiguar cómo hacerlo aparecer en las publicaciones. Supongo que ha existido por tanto tiempo que todos asumen que ya debería saberse. Respuesta perfecta para que mi Tipo de Publicación Personalizado aparezca en el Bucle.

    Jerry Craig
    Copero

  9. He probado el plugin, muy impresionante. Sin embargo, estoy tratando de que aparezca un atributo de página de los atributos de 'Páginas' de mis temas, es decir, la capacidad de usar una opción de página de ancho completo. ¿Debo asumir que su plugin solo extrae atributos de los diseños de tipo de publicación en lugar de los diseños de tipo de página? Todo lo que quiero es tener la opción de configurar una publicación con una plantilla completa y predeterminada.

    Gran trabajo, sin embargo, lo usaré mucho.

    Salud
    Ed

  10. He probado la forma del plugin pero no pude hacer que la publicación apareciera. Tal vez sea porque no pude encontrar el archivo loop.php.

    De todos modos, muchas gracias, estoy bastante seguro de que funcionará pronto.

    Quiero decir que una cosa súper increíble que sería genial hacer con WordPress es tener la posibilidad de crear vistas personalizadas de contenido al igual que en Drupal con el módulo de vistas.

    Sé que hay un plugin llamado Pods y Pods CMS que se supone que hace eso posible. Quizás podrías pedirle al desarrollador que ayude en una publicación en wpbeginner si no lo entiendes en absoluto como yo. Estoy seguro de que a mucha gente le encantaría esto. Presentar vistas es lo que realmente hace que un CMS sea un CMS verdaderamente dinámico después de todo.

  11. Buen tutorial, gracias por compartir.

    Tengo una pregunta sobre esto.
    Creé un tipo de publicación personalizado a través de functions.php (un calendario) que tiene una meta box personalizada en la interfaz de administración. Esta meta box utiliza jQuery en un campo.(http://jqueryui.com/demos/datepicker/).
    Para que este datepicker funcione, necesito incrustar los scripts necesarios.
    add_action(‘admin_enqueue_scripts’,’enqueue_my_scripts’);
    funciona pero mis scripts se cargan en toda la interfaz de administración. (lo que interfiere con el jquery predeterminado de la administración de WP)
    Así que lo que necesito es el hook para mi tipo de publicación personalizado.
    esto:
    add_action(‘register_post_type’,’enqueue_my_scripts’);
    no funciona porque register_post_type no es un hook.
    Entonces, ¿cuál es el hook para un post_type personalizado?

    • Podrías intentar agregar lo siguiente a la definición de tu función antes de registrar el script:

      if(is_admin()) return;

      Así que algo como:

      function some-function(){
      // no necesitamos esto en las páginas de administración, así que...
      if(is_admin()) return;
      // registramos el script personalizado
      wp_enqueue_script( 'some-script' );
      }

  12. ¿Cómo hago para que cada tipo de contenido aparezca en el loop? Quiero decir, es casi como Tumblr. Si publico una imagen... necesito personalizar el código en el loop, lo mismo si publico un enlace.

  13. No logro que el bucle funcione para consultar publicaciones de mi tipo personalizado. Tu ejemplo parece bastante sencillo, así que probé lo siguiente: $var = query_posts( ‘post_type=sponsor’);

    Entonces comencé un bucle
    while ($var ->have_posts()) : $var ->the_post();
    Haz cosas
    endwhile;

    esto devuelve un error de php:
    Fatal error: Call to a member function have_posts() on a non-object in single-sponsor.php on line 22

    la línea 22 es la línea con el bucle while.

    ¿Ideas? ¿Qué estoy haciendo mal?

  14. He intentado crear una etiqueta para un campo personalizado, y cuando uso get_the_tags dentro del bucle de tipo personalizado, no imprime nada.
    ¿Alguna sugerencia?

  15. Estoy muy emocionado con esta nueva función ^-^ Hiciste un buen video. Aunque en tu ejemplo, ¿por qué usar tipos de publicación personalizados y no simplemente inventar una categoría de libros y películas para las publicaciones? De esa manera te ahorras toda la molestia de un tipo de publicación personalizado.

    • Primero, te permite organizar las cosas de manera diferente. Segundo, puedes tener un panel de escritura completamente diferente con opciones diferentes. Permite muchas más personalizaciones...

      Administrador

  16. ¡Gracias por este gran artículo! Soy un principiante real en wp, y tal vez puedas ayudarme con esta pregunta:
    ¿Es posible mostrar los archivos de un tipo de publicación personalizado en la barra lateral como se puede hacer usando el plugin "display archives by cat" de kwebble?

    • Sí, es posible mostrar tipos de publicación personalizados como archivos. Simplemente crea un bucle personalizado en la barra lateral para mostrar publicaciones o categorías de un tipo de publicación específico.

      Administrador

  17. ¿Hay guías fáciles de entender sobre cómo agregar opciones a las publicaciones personalizadas? Por ejemplo, si una película es drama, comedia, terror... tener esas opciones como casillas de verificación DENTRO del panel de edición de publicaciones personalizadas. No parece encontrar una guía o un plugin para eso.

  18. Hola, ese fue un gran artículo. Esperaba que supieras la respuesta a mi pregunta.
    En las últimas dos líneas tienes:

    query_posts(array('post_type' => array('post', 'movies')));

    esto devuelve todas las publicaciones y tipos de publicación llamados movies.

    ¿Sabes cómo devolver ambos tipos de publicación llamados 'movies' y publicaciones en la categoría 'movies', pero excluir todas las demás publicaciones que no tengan esta categoría??

    • Los tipos de publicación personalizados son buenos para los usuarios que usan WordPress para algo más que un blog, por ejemplo, un CMS. Digamos que quieres tener un sitio que tenga tu portafolio y tu blog. Obviamente, no quieres que tus blogs se vean igual que tu portafolio. Ahí es donde los tipos de publicación personalizados resultan útiles. Esta es una característica muy versátil para llevar WordPress al siguiente nivel. Para el usuario promedio de blogs, probablemente no necesiten tipos de publicación personalizados.

      Administrador

      • De acuerdo, pero todavía estoy tratando de entender la diferencia entre esto y simplemente categorizar cosas. He hecho muchos sitios para personas donde páginas separadas hacen cosas como listar solo la categoría de "eventos actuales" y otra la categoría de "proyectos" o lo que sea. ¿Cómo es esto mejor?

  19. No puedo evitar pensar que esto habría sido más útil si hubieras mostrado algo fuera de lo común con los tipos de publicación, en lugar de usar el viejo "películas y libros".

    ¿Qué tal un sideblog usando tipos de publicación, o algo un poco más práctico? Todo esto hace es reiterar lo que el Codex de WP eventualmente tendrá, si es que ya no está ahí.

    • Lamentamos que pienses así, Chris. El Codex de WP no tendrá un video que te muestre cómo hacer esto. No importa qué nombres usemos para los tipos de publicación personalizados, la idea es cómo agregarlos. No crearemos un sitio extraordinario solo para escribir una publicación sobre tipos de publicación personalizados. Si buscas ese conocimiento, probablemente sea mejor que lo hagas tú mismo. Este blog todavía tiene que satisfacer las necesidades de los usuarios de nivel principiante, por eso compartimos el método del plugin.

      Administrador

  20. ¿Funcionará esto en WordPress 2.9 o es solo para 3.0?

    Intenté usar la versión 3.0, pero ocurrió una rareza donde ninguno de mis plugins se activaba, incluso los que decían que se activaban. ¡Fue muy extraño!

    -Kevin

      • Allright, I see, thnx! ;)

        Entonces supongo que empezaste por la manera de codificación directa. En ese momento, al ver solo todo el asunto del código, simplemente me rendí. Por lo tanto, supongo que no vi la manera del plugin…

  21. Muy buen artículo. El plugin Custom Post Type UI tiene opciones muy similares al código PHP puro para registrar tipos de publicación, lo cual es genial para los desarrolladores.

    Gracias por introducir muchos plugins útiles para trabajar con tipos de publicación personalizados.

  22. Me alegra que Wordpress haya integrado tipos de publicación personalizados directamente en el framework de wp. Sin embargo, no veo cómo es mejor que usar plugins ya disponibles como Magic Fields o Flutter. Con esos plugins obtienes el mismo efecto además de campos personalizados fáciles de configurar con muchos tipos diferentes y flexibilidad en cómo ingresar y mostrar tus datos. ¿wp 3.0 soporta algo así de inmediato?

    • Puedes crear una interfaz de usuario para campos personalizados y casi cualquier cosa en el backend con Tipos de Publicación Personalizados. Tienes razón en que esos plugins lo hacen muy fácil para los usuarios, pero si alguno de esos plugins falla en el desarrollo, entonces no te queda otra opción.

      Administrador

      • Justo. He jugado un poco con la beta, pero no tanto como debería, supongo. Sería emocionante si fuera más en esa dirección. Como me he vuelto experimentado usando esos plugins, casi no hago un sitio ahora sin uno

        Así que sería genial si todas esas herramientas estuvieran disponibles y se manejaran dentro de la aplicación original. Puedo ver que conduce a una mejor gestión del backend y anima a más personas a contribuir en lugar de a un grupo más pequeño que apoya un plugin en particular.

        • Creo que han dejado intencionalmente parte del código de tipos de publicación personalizados como código. Para permitir que el usuario promedio tenga que lidiar con él.

    • No puedo hacer que ninguna taxonomía se muestre en twentyeleven, ni puedo encontrar un tutorial que me muestre cómo de principio a fin, todos parecen centrarse en twentyten y el loop

Deja una respuesta

Gracias por elegir dejar un comentario. Ten en cuenta que todos los comentarios son moderados de acuerdo con nuestra política de comentarios, y tu dirección de correo electrónico NO será publicada. Por favor, NO uses palabras clave en el campo del nombre. Tengamos una conversación personal y significativa.