Nuevo en WordPress 3.1: Archivos de Entradas Personalizadas

Muchos habéis leído y comentado el artículo que escribí con motivo de la salida de WordPress 3.0 Crear una lista de productos con WordPress 3.0 usando Entradas personalizadas, campos personalizados y taxonomías donde creábamos Entradas Personalizadas (el ejemplo del artículo era “Producto”) utilizando la clase creada por Matt Wiebe. La razón fundamental de usar este código era una gran carencia que tenía WordPress 3.0 con respecto a las Entradas Personalizadas: no permitía el uso de archivos de las entradas que habíamos creado (por ejemplo, para el caso de “Productos”, si hacíamos www.ejemplo.com/productos wordpress nos devolvería un “404” o página no encontrada).

Ahora ha salido WordPress 3.1 y este problema se ha solucionado (haciendo ya de paso no necesaria la clase creada por Matt Wiebe). Vamos a volver sobre aquél artículo del que hablaba antes y vamos a crear Entradas personalizadas y sus archivos usando WordPress 3.1.

¿Qué son las entradas personalizadas?

Pero antes de nada, os preguntaréis algunos ¿Qué es eso de una entrada personalizada? Es un nuevo tipo de entrada que aparece en el menú de la izquierda del menú del administrador de WordPress. Por ejemplo, si creamos la entrada personalizada “Productos”, nos saldrá así:

Campo personalizado Producto

Y donde he puesto “Productos” podría haber puesto “Libros”, “Discos”, “Pisos”, “Muebles” o cualquier cosa que se os ocurra (en el ejemplo que desarrollo al final de este artículo he escogido “Videojuegos”). Esto nos dará una mayor facilidad de uso ya que estructuramos mejor los distintos tipos de entradas. Agrupamos aquellas entradas que tengan una serie de características comunes y las configuramos de manera específica para insertar dichos contenidos.

Para crear una entrada personalizada utilizaremos la función register_post_type. Vamos a usar el mismo ejemplo que utilizamos cuando hablamos por primera vez sobre las entradas personalizadas: Vamos a crear una entrada personalizada que se llama “Productos”.

El código

Abrimos el archivo functions.php y pegamos el código siguiente (siguiendo lo que nos dice WordPress sobre esta función, ver el enlace anterior, voy a poner todas las opciones disponibles):

Toma ya… Asusta en un principio, ¿verdad?…. Tened en cuenta que he incluido todas las opciones. Luego veremos una simplificación en el ejemplo con el que acabo el artículo. Vamos a ver qué hemos introducido en nuestro archivo functions.php. Voy a seguir lo que nos dice la página oficial de WordPress:

Las etiquetas

En el primer bloque de código creamos un array ($labels) que incluye lo que llaman “labels” o etiquetas. Básicamente aquí lo que vamos a indicar son los nombres y frases que van a aparecer en el administrador en referencia a “Productos”, nuestra nueva Entrada Personalizada. Si nos saltamos esto de las etiquetas o alguna de ellas no pasará nada, ya que WordPress pondrá las que usa por defecto. Estas etiquetas son:

  • ‘name’ – Nombre general de la entrada personalizada, normalmente en plural.
  • ‘singular_name’ – Nombre para una unidad de la entrada personalizada (singular).
  • ‘add_new’ – El texto para añadir una entrada nueva (en nuestro caso un nuevo producto).
  • ‘add_new_item’ – Si estamos añadiendo una entrada, este texto saldrá sobre el título.
  • ‘edit_item’ – Si estamos editando una entrada, es el texto que saldrá sobre el título.
  • ‘new_item’ – El texto para Nuevo item (sale por ejemplo en la barra superior si estamos en el campo personalizado)
  • ‘view_item’ – El texto para Ver una entrada
  • ‘search_items’ – El texto para Buscar una entrada
  • ‘not_found’ – El texto a usar cuando no se encuentra una entrada.
  • ‘not_found_in_trash’ – El texto a usar cuando no se encuentra una entrada en la papelera.
  • ‘menu_name’ – El texto que pondremos en el menú del administrador. Esto viene bien por ejemplo si la entrada personalizada tiene un nombre demasiado grande como para que entre en el menú. Aquí podremos darle uno más corto.

Para familiarizaros con cada una de ellas os aconsejo que peguéis el código, hagáis cambios en cada texto para buscarlo en el administrador y así veis dónde va cada uno, cual es el texto por defecto si no ponéis nada, y si os interesa cambiarlo o no.

Los argumentos

En el siguiente bloque de código creamos los argumentos y los guardamos en un array que llamamos $args. Como veis, lo primero que incluimos en este nuevo array es el array que hemos creado anteriormente con las etiquetas, $labels.

Si queréis estudiar con calma todos los argumentos os recomiendo que acudáis al codex de wordpress donde se habla de ellos. Vamos a ver por encima los más importantes:

  • public – Define de manera agrupada los valores de publicly_queriable, show_ui, show_in_nav_menus and exclude_from_search. Por defecto es “false”. Si queremos podemos tener cada uno de ellos por separado, como vemos a continuación. Con “false” tendremos “show_ui=false”, “publicly_queryable=false”, “exclude_from_search=true” y “show_in_nav_menus=false”. Al revés si lo ponemos en “true”.
  • publicly_queryable – Si se puede (true) o no (false) hacer una consulta de este tipo de entrada en la web. Pongamos un ejemplo: Si hemos creado la entrada personalizada “Producto” y creamos nuestro primer producto, por ejemplo “Silla” y hacemos click en “Ver Producto” podremos ver la página sólo si este argumento está en “true”. Si está en “false” obtendremos un error 404 (pagina no encontrada). Su valor por defecto es el que aparezca en “public” (el primer argumento del que hemos hablado).
  • exclude_from_search – Determina si va a aparecer o no en los resultados de búsquedas que se hagan en la web. Por defecto su valor será el opuesto al que tenga “public” (el primer argumento del que hemos hablado).
  • show_ui – Si aparece en el menú de administración o no. Si queremos que “Producto” salga en el menú de la izquierda del administrador de WordPress esta opción tiene que estar en “true” o verdadero. Su valor por defecto es el que aparezca en “public” (el primer argumento del que hemos hablado).
  • show_in_menu – Determina si la entrada personalizada (“Productos” en nuestro caso) aparece o no en el menú del panel de administración y dónde se va a mostrar en ese menú. “show_ui” debe estar en “true” para poderlo usar. Su valor por defecto es “null” o nulo. Podemos ponerlo en: “false” para que no se muestre en el menú o “true” para que sí salga. También podemos mostrarlo como un submenú si añadimos en lugar de “true” o “false” el nombre de una página de alto nivel de las existentes en el menú. Por ejemplo, si escribimos ‘show_in_menu’ => ‘tools.php’ la entrada personalizada saldrá dentro de “Herramientas” (eso si, sin la opción de Añadir uno nuevo ni sus taxonomías)
  • menu_position – Determina el orden en el que aparecerá esta entrada personalizada en el menú del panel de administración. Por defecto aparece debajo de “Comentarios” , tal y como podéis ver en la imagen de arriba (por defecto su valor es “null” o nulo, como en el código de más arriba). Valores que le podéis dar (siempre es “null” o un número):

    Por defecto: null – debajo de Comentarios
    5 – debajo de Entradas
    10 – debajo de Multimedia
    15 – debajo de Enlaces
    20 – debajo de Páginas
    25 – debajo de Comentarios
    60 – debajo del primer separador (debajo de Apariencia)
    65 – debajo de Plugins
    70 – debajo de Usuarios
    75 – debajo de Herramientas
    80 – debajo de Ajustes
    100 – debajo del segundo separador

  • menu_icon – La URL del icono que saldrá para esta entrada personalizada en el menú de administración. Si os fijáis en la pantalla de arriba, el icono por defecto es una especie de chincheta. El valor por defecto es “null” o nulo.
  • capability_type – Permite alterar los permisos de lectura, edición y borrado para este tipo de entradas. Si quieres que los permisos sean iguales que el de el resto de entradas deja el valor por defecto (“post”).
  • capabilities – Como el anterior, pero aquí podemos definir un array con los distintos permisos para distintas funciones (para una descripción más detallada ver el codex de wordpress).
  • hierarchical – Te permite elegir si quieres que la entrada personalizada sea jerarquica o no. Por defecto es “false”. Si lo pones en “true” tus entradas personalizadas se comportarán igual que las páginas de WordPress, permitiendo seleccionar una “Superior” en jerarquía en la casilla de “Atributos de Página” (ver más adelante como activar que se muestre esta casilla, en “supports”).
  • supports – Te permite definir que campos aparecerán en pantalla cuando vayas a crear o a editar una nueva entrada personalizada. Por defecto aparece el “título” y el editor. Las opciones son:
    ‘title’ – el título
    ‘editor’ – el contenido
    ‘author’ – el autor
    ‘thumbnail’ – la imagen destacada, el tema debe soportarlas.
    ‘excerpt’ – Extracto
    ‘trackbacks’
    ‘custom-fields’ – campos personalizados
    ‘comments’ – comentarios (también verás el número de comentarios en la pantalla de edición)
    ‘revisions’ – Guardará las revisiones.
    ‘page-attributes’ – Para que aparezca el cuadro de “Atributos de Página” y poder seleccionar superior, plantilla y orden. La opción “hierarchical” tiene que estar en “true” para mostrar la opción “Superior”.
  • taxonomies – Un array con las taxonomías, categorías o tags ya existentes que quieras usar con esta entrada personalizada. Por defecto no se introduce ninguna.
  • has_archive – Permite los archivos de la entrada personalizada. Ojo porque por defecto es “false”. Si queremos poder tener archivos de las entradas personalizadas lo tenemos que poner en “true”. Al poner “true” ya podemos ver todas las entradas generadas con el mismo tipo de entrada personalizada, cosa que no podíamos hacer con WordPress 3.0, tal y como decíamos al empezar el artículo. El enlace permanente que se crea al poner “true” es el que aparece en el “slug” de la entrada (por ejemplo, si el slug es “productos” al escribir “www.ejemplo.com/productos” se verán todas las entradas personalizadas tipo “productos”). Podemos ir de todas formas más allá y en vez de “true” escribir una cadena de texto para indicar cual será el enlace, por ejemplo ‘trabajos’, y el url será “www.ejemplo.com/trabajos”.
  • rewrite – Permite reescribir los permalinks con el formato que le demos. Por defecto es “true” usando el tipo de entrada como “slug”. También podemos poner un array con una serie de opciones:
    ‘slug’ – prefijo para el slug de tus entradas personalizadas – por defecto es el nombre de las entradas.
    ‘with_front’ – si los enlaces permanentes comienzan con una base previa (por ejemplo /blog/) puedes hacer que se respete poniendo aquí “true” (sería entonces /blog/productos/) o que no se mantenga con “false” (sería entonces sólo /productos/). Por defecto es “true”.
    ‘feeds’ – por defecto el valor que tenga “has_archive”
    ‘pages’ – por defecto es “true”

    Por ejemplo:

  • show_in_nav_menus – Determina si el tipo de entrada personalizada está disponible para ser seleccionado en los menús de navegación o no. Su valor por defecto es lo que ponga en “public” (el primero de todos los argumentos que hemos visto)

Bueno, eso es todo. Os recomiendo que vayás haciendo pruebas cambiando cada uno a sus diferentes valores posibles y así vayáis experimentando.

El ejemplo

Bueno, después de ver toda la teoría vamos a crear un sencillo ejemplo desde cero. Supongamos que tenemos que crear una web en la que hay una página que muestra distintos videojuegos. Primero creamos la entrada personalizada en el archivo functions.php de nuestro tema. Pegamos el siguiente código:

Como veis he utilizado para la función las mínimas opciones, dejando las demás en sus valores por defecto. Así simplificamos.

Esto nos creará en el menú de administración la opción para introducir “Videojuegos”:

Nueva entrada personalizada en WordPress 3.1

Ya podemos empezar a introducir nuestros videojuegos. No voy a introducir campos personalizados ni taxonomías para centrarnos en los campos personalizados y simplificar el ejemplo. Hacemos click en “Añadir nueva” debajo de “Videojuegos” y creamos nuestro primer videojuego.

Creamos otros cuantos más. Una vez creados, si hacemos click en “Videojuegos” tendremos una lista de los ya creados:

Y ya está. Si ahora vamos a /videojuegos/ (poniendo delante la url de tu web), verás todas las entradas que hay de “videojuegos”. Si obtienes un error 404 o página no encontrada ve a Ajustes/Enlaces Permanentes y refréscalos haciendo click en guardar (a propósito, en este ejemplo yo lo tengo en “Estructura personalizada: %postname%”).

En el tema que viene por defecto con WordPress 3.1 me sale así:

WordPress para sacar el archivo de las entradas “videojuegos” va a buscar primero el archivo archive-{$post_type}.php (en nuestro caso “archive-videojuegos.php”). Si no lo encuentra (como es el caso) utilizará el archivo archive.php.

Vamos a crear archive-videojuegos.php y lo guardamos en la carpeta de nuestro tema. Voy a hacer uno sencillo (lo podéis hacer tan complejo como queráis, para mostrar vuestras entradas de la forma que mejor os parezca):

Como véis he creado un sencillo loop. Ahora si refresco la página cambiará lo que vemos, ya que ahora WordPress usa el nuevo archivo “archive-videojuegos.php”.

Si ahora veis el código que ha generado WordPress hay varias cosas interesantes. La primera es que la etiqueta “body” recoje una clase especial para nuestras entradas personalizadas. En mi ejemplo:

Esto nos permite dar estilos personalizados a esta página. La segunda es que cada entrada tiene también una clase que identifica al tipo de entrada:

Si hacemos click en una de las entradas iremos a un videojuego concreto. Por ejemplo, si hacemos click en “Magicka” la url será “/videojuegos/magicka/”. Utilizará por defecto el archivo single.php, cuya etiqueta “body” será (en mi ejemplo):

Como veis la clase “single-videojuegos” nos permite también dar un estilo propio a esta página. El div de la entrada nos da también una clase propia. Pero si queréis ir más allá y cambiar totalmente el archivo single.php para las entradas “videojuegos” podéis crear el archivo “single-videojuegos.php” que será entonces el que se cargue. Voy a crear uno introduciendo sólo un cambio sobre el original, el título “Esto es un videojuego!”:

Guardamos este archivo junto al resto de nuestro tema (donde está también single.php), refrescamos y vemos esto:

Como veis, el uso de las entradas personalizadas es mucho más sencillo de lo que puede parecer a primera vista. Espero en siguientes artículos complicar esto un poco incorporando campos personalizados y taxonomías.

Otras lecturas recomendadas

En Emenia, Crear una lista de productos con WordPress 3.0 usando Entradas personalizadas, campos personalizados y taxonomías, el artículo que escribí cuando salió WordPress 3.0. Está ya obsoleto pero os puede servir como introducción a este.
Wordpress, Función register_post_type
Mark McWilliams, WordPress 3.1 Introduces Custom Post Type Archives
Justin Tadlock, Custom post types in WordPress. Está un poco anticuado por referirse a WordPress 3.0, pero sigue mereciendo la pena
Generador de Entradas personalizadas, de Themergency.

49 comentarios en “Nuevo en WordPress 3.1: Archivos de Entradas Personalizadas

  1. mmm, esto es peor que cuando acaba una temporada de tu serie favorita, jjj. Espero que lleguen pronto los siguientes artículos sobre campos personalizados y taxonomías.

    Muchas gracias por el aporte.

  2. Juan, excelente blog y excelente serie de artículos. Ante todo, muchas gracias.
    Ya he creado exitosamente mis propias entradas personalizadas. Quisiera que consideraciones hay que tener en cuenta si uno quiere tener más de un tipo de entrada personalizada en un mismo tema. Vengo intentando y me saltan varios bugs (fruto de mi desconocimiento).
    Muchas gracias

  3. Hola Juan,

    gracias por el artículo, fue muy útil. Pero tengo una pregunta; ¿como puedo incluir un botón para subir imagenes en un campo personalizado y eliminar el editor de texto por defecto de wordpress, he buscado esta información, pero no encuentro nada, espero puedas ayudarme.

  4. Perdón la ignorancia, soy nuevo en WordPress y encontré interesante la funcionalidad de entradas y campos personalizados.
    La duda es, ¿que archivo functions.php hay que editar? Yo encontré varios, entre ellos los de los temas. ¿No corro riesgo de que la funcionalidad que agrego a ese archivo se pierda cuando actualizo WordPress??
    Gracias!! Muy bueno y util el blog! Y lo mejor de todo: en ESPAÑOL!!!

  5. Saludos Juan Bustamante, me gusto el post, se ve que tienes experiencia en el tema, por eso me atrevo a preguntarte, es posible generar una pagina, que solamente llame a los post que son en este caso “videojuegos”, para así dejarla en un menú, por ejemplo page-videojuegos.php y utilizar un query_posts para llamar solamente entradas videojuego. ojalá puedas responder saludos desde Chile.

  6. hola Juan

    he creado un post personalizado siguiendo los pasos de tu tutorial, pero tengo el problema que las categorias los ignoran y no los incluyen cuando haglo click en el link de alguna categoria que esté vinculada a los tipos de post personalizados,

    hice un post personalizado llamado ‘articulos’ , cargué contenido en él y le asigné una categoria -como si fuera un post o una pagina- sin embargo, en el template correspondiente cuando quiero ver todos los ‘articulos’ de esa categoria, éstos no existen…

    como tengo que hacer para que las categorias, digamos, puedan mostrar post personalizados?

    gracias desde ya,

    martin

      1. Yo tengo exactamente el mismo problema que tu.

        Todo esto esta muy bien, pero si quieres visualizar los tipos personalizados mediante la navegación de categorias, efectivamente los tipos personalizados no sale. En la búsqueda de wordpress tampoco salen, solo busca en las entradas estandard.

        Esto es un grave problema.

        Alguien tiene la solucion a esto?

        Gracias.

        1. Hola,

          el problema es que archives.php sólo muestra entradas tipo ‘post’. Prueba añadiendo esto a tu archivo functions.php:

          1. Hola Juan.

            En primer lugar gracias, no tengo ni idea de programación pero poco a poco he llegado hasta aquí que es ya un éxito gracias a blogs como el tuyo.

            Te cuento, tengo el mismo problema. He creado un nuevo tipo de contenido con sus propias taxonomias. He conseguido que en la página de edición de este nuevo tipo aparezca también el cuadro de selección de categorias. Pero al publicar el nuevo tipo de contenido no aparece en las categorías indexadas. He incluido el código nuevo que adjuntas pero ya no sale ninguna entrada ni tipo de entrada…

            Por favor, alguna ayuda o indicación? Muchas gracias!

  7. Hola,

    Muchas gracias por la explicación, creo que es justo lo que estoy buscando para hacer algo parecido al ejemplo de videojuegos pero con otro tipo de productos. Mi pregunta es: ¿cómo se podría hacer una wishlist o similar para que los lectores puedan seleccionar que producto tienen o les gustaría tener?

    gracias

  8. Hola Juan, he llegado aquí por el tema de las taxonomías.
    Hace tiempo, cuando salió la versión 3 de wp me dio por hacer una web no.blog personal con mi portfolio como diseñador gráfico. Entre pitos y flautas me caí de una pared mientras escalaba y lo que sigue es muy feo. Tdo para decir que he retomado el tema y es como empezar desde 0.

    En esta ocasión mi web es mil veces más sencilla y he comprado un slider en el que me pide taxonomías si quiero publicar el slider en una página en lugar de un post. He creado en html5 la estructura de las páginas que componen mi web y he convertido ese html para que sea un theme. Por lo tanto hay archivos del theme que a lo mejor no están y deberían, a saber. Por cierto, el plugin se llama TouchCarousel por si lo quieren ver, no tiene desperdicio.

    En el caso de querer poner un slider en un post, me detecta el plug taxonomías que creé cómo categorías y subcategorías y de esas categorías. Estas son, para no liarme, PORTFOLIO y su subcat, PROYECTO. La otra categoría es DESCARGAS con su subcategoría WALLPAPER.

    Como me hago un lío, he pensado en crear una página para PORTFOLIO y que en ella se cargue ese slider, ¿cómo sería crear una taxonomía para la página PORTFOLIO? Siento el discurso, el no controlar bien la base de este mundo hace que me extienda en mis dudas.
    Saludos y gracias.

    1. HOla,

      No crearías una taxonomía (ya sea taxonomía personalizada, categoría o etiqueta) para una página. Si creas una taxonomía personalizada estará asociada a una Entrada personalizada. Las Categorías y Etiquetas están disponibles para todas las entradas. A no ser que te refieras a que vas a crear una pestaña del menú que sea la Categoría Portfolio, por ejemplo.

  9. Juan una consulta:

    se puede añadir añadir a las entradas personalizadas la funcionalidad que permite publicarlos como sticky post?

    gracias

  10. Hola de nuevo Juan,
    Estoy preparando para la web de la empresa donde trabajo una sección de presupuestos.
    Hasta ahora, lo que hemos hecho ha sido crear un tipo de posts personalizado, y mediante un plugin (custom contact forms) hacer los formularios para cada producto. De allí recojemos los datos y luego hacemos el presupuesto con un programa aparte de la web, que manualmente se le envía al que lo haya solicitado.

    Digamos que el sistema es bastante macarrónico, y http://cevagraf.coop/?presupuesto=encuadernacion-grapa 😉 si lo miras verás que está muy limitado.

    La idea final es hacer una calculadora online, pero de momento queda fuera de nuestro alcance, y lo único que queremos es montar formularios más intuitivos, saltándonos el plugin y utilizando diferentes plantillas que mediante la clase phpmailer se reenvien al usuario y a nosotros. Mejor si nosotros podemos modificar algunos datos de forma sencilla, bien mediante el contenido del artículo o mediante campos personalizados.
    Como necesitamos un formulario con diferentes características para cada producto (hasta ahora todos los productos iban dentro de un tipo de post “presupuesto”) la pregunta que tengo es si es posible que a ese tipo de post se le pueda escojer una plantilla distinta para cada producto, tal como puede hacerse al crear una página, para lograr mantener el contenido más ordenado de lo que estaría todo mezclado en páginas. Espero haberme explicado, compañero.

    Gracias desde ya. Sigo aprendiendo mucho con tu web, es de lo mejor que he logrado encontrar. Gracias de nuevo por compartir tu sapienza. 😉
    Un saludo!

    1. Pues ya tengo la respuesta.

      He encontrado la respuesta aquí [http://wpquestions.com/question/show/id/2775]. Lo resumo de todas maneras.

      Yo quería evitar el utilizar ningun plugin, pero como me corre un poco de prisa, de momento lo haré así.

      He estado viendo que hay dos plugins para esto, (que seguro que habrá más) uno es Custom Post Template, y el otro es Single Post Template. De los dos, sólo el primero me ha funcionado correctamente, ya que tengo una instalación con multisitios y el Single Post Template no me funcionaba.

      Una vez instalado, creamos la plantilla que queramos utilizar añadiendo delante:

      Y nos aparecerá en las entradas un desplegable con tantas plantillas como tengan incluido el código. Esto funciona con entradas normales, pero si queremos utilizarlo en entradas personalizadas, hará falta añadir un código al functions.php, para habilitar esa función:

      No parece demasiado complicado implementarlo todo en el tema y prescindir del plugin, pero de momento no voy a tocarlo demasiado, ya que así funciona bien.
      Ahora puedo crear plantillas con formularios php para cada producto(entrada), con sus campos personalizados, y meter todos los productos en un tipo de entrada personalizada para mantenerlo todo más ordenado.

      Un saludo y gracias!

  11. Buenas tardes Juan,

    En primer lugar, muchas gracias por todos los artículos que estas publicando, la verdad que es una pasada lo que sabes de WordPress.

    Mira, te comento un pequeño problema que tengo. Acabo de crear mi entrada personalizada que se llama “Fiestas” con la ayuda de tu artículo. Para diferenciar las “entradas normales” de las entradas “Fiestas” he decidido crearme una nueva tabla en la base de datos (wp_parties por ejemplo) en la que voy a almacenar toda la información relacionada con el tipo de entradas “Fiesta”. Ahora viene la pregunta del millón, es posible que al pulsar sobre la entrada personalizada de fiestas, me muestre los datos de mi tabla wp_parties en lugar de los de wp_posts???

  12. Hola,

    Queria agradecerle por la cantidad de informacion que disponibiliza en su blog para que otras personas puedan aprender y desenvolver sus proprias competencias sean estas a un nível básico o mas avanzado.
    Em mi caso particular estoy haciendo uso de las entradas personalizadas y de las campos personalizados aunque estoy utilizando un plugin muy simple -CPT-onomies- que creo que me ha permitido, juntamente con la lectura de sus articulos, hacer algunas experiencias en localhost.

    Incluso logré colocar las campos personalizados y estoy intentando modificar el tipo de letra de estas y a las taxonomias apresentadas.

    Ahora bien, el problema mayor tiene que ver con la definicion de la estrutura del blog/site. La intencion es utilizar los menus para agregar las diversas entradas personalizadas. Utilizando páginas en el menu la estrutura queda rara. La ruta queda asi http://localhost/wordpress/agencias-de-recrutamento/
    Pero lo que sucede en la pagina con la “lista” de posts personalizados es esto:

    You are here: Home* / Agências de Recrutamento * / Agências de Recrutamento
    Home* y Agências de Recrutamento* – tienen enlace a sus paginas y la página donde nos encontramos es la misma q viene antes, Agências de Recrutamento, o sea se repite.

    Creo que sea normal que se repita pero que hacer para que asi no sea?
    Pero todo funciona, incluso la pesquisa interna en el site/blog y los campos personalizados etc.
    No sé que debo hacer para que no se me repita esta estrutura o si esto es realmente grave. Entiendo que del punto de visto de optmizacion SEO no es conveniente usar páginas para contenido. Pero si esta fuese la solucion quedaria repetido en la url? Es que no entiendo bien cual la consequencia imediata.

    Lo que realmente desearia hacer seria colocar los posts personalizados en el Menu si, pero que estubieran en Categorias. O sea, en el menu estarian las categorias que deseasse con las “listas” de posts personalizandos adentro.
    Intenté hacerlo, pero la verdad es que no obtuve resultados. Leí en algun comentário suyo que el problema es que archives.php sólo muestra entradas tipo ‘post’y intente agregar el código que usted propone pero no sale bien.

    Espero que pueda darme algun consejo,

    un cordial saludo,
    Miguel

  13. Se que este artículo es de hace tiempo, pero lo he econtrado ahora. Soy nuevo con WordPress.

    Quisiera saber si es posible relacionar dos tipos de entradas diferentes. Un ejemplo, creamos una entrada que sea libros, con sus campos correspondientes. Después otra entrada que sea autores, también con sus campos. Y relacionar los libros con los autores. De forma que si visito la entrada de un autor puedo ver los libros que ha publicado y acceder directamente a la entrada de un libro en concreto.

  14. Lo primero de todo darte las gracias por el gran trabajo que nos muestras y explicas en tu blog.

    He estado probando el código que has puesto y tengo un problema.

    Después de crear un nuevo elemento del nuevo tipo, si le doy a la vista previa sin guardar, se ve bien, pero si lo guardo no se ve en vista normal ni ya en vista previa.

    Evidentemente creo que es por algún problema de mi instalación, ¿qué crees que puede ser?

    Muchas Gracias por tu atención.

     

  15. Tan sólo pone que no encuentra la página. Yo creo que es un problema con el slug. He probado a crear varios desde mi propio pluging, y hay veces que funciona y otras no. Sin razón aparente.

    Estuve haciendo pruebas, cambiándole sólo una letra al nombre del tipo y el slug, y como te decía, y unas veces va y otras no. También lo probé haciéndolo directamente desde el archivo functions.php del Theme y me pasa lo mismo.

    De momento me instale el pluging “Types – Complete Solution for Custom Fields and Types” y lo generé sin problemas. Pero claro, me gustaría poder personalizarlo sin pasar por el pluging.

    1. Intenta refrescar los permalinks a ver… Simplemente entra en la página de Ajustes/Enlaces permanentes y grábalos de nuevo, a ver si se soluciona.

  16. Hola, este es un de los mejores tutoriales que he visto, aunque tengo una duda

    yo quiero crear por ejemplo entradas personalizadas llamada “Noticias” que contenga 3 categorias

    Noticias
    Cultura
    Tecnologia
    Entretencion
    _________________
    La idea es que cuando el “editor” entre a alguna de las categorias en este caso a cultura, pueda crear la noticia rapidamente (sin agregar metatag, ni elegir categorias) la idea es que el enlace permanente sea

    wwww.miweb.com/noticias/cultura/nombre-de-la-entrada

    Es posible?

    Atento a los comentarios

     

    Saludos!

  17. hola, excelente post de verdad, ahora tengo una duda, yo no cree ningun php, solo agregue la funcion que mencionas y todo bien puedo crear articulos, el problema viene que no me da la opcion de elegir alguna categoria, y parece que los posts se crean en “archivos”, tengo un apartado de la web donde se muestran los posts mas recientes y no los toma en cuenta, ademas quisiera preguntarte como hacer si yo no cree el php, para que solo se muestre el metabox personalizado a la categoria “videojuegos”, saludos y gracias

  18. Hola muy buen trabajo.

    hola mira he echo todo con éxito. ahora el problema es que he creado un DIV en mi index que es donde quiero que se muestren estas entradas personalizadas.

    como hago que se muestre y poder darles el formato que yo quiera..

    Gracias espero tu ayuda muy pronto.

    si pudiera ser al correo te lo agradeceria gracias

  19. Muy bueno el tutorial, he dado verdadero pasos de gigante, por eso te doy las gracias de antemano.

    A ver si me se explicar:

    Estoy trabajando en una web para una agencia de viajes: http://www.srbtravel.com/SRB, con el theme Pytheas de WPExplorer.

    Para este proyecto, además del tipo de Entrada por defecto, necesito otro tipo Personalizado que sería “hoteles”, ambos tipos de entradas, se rigen por la taxonomía común de la página, es decir, emplean las mismas categorías, que son estas: hoteles, españa, italia, grecia, etc.

    Las entradas NORMALES están vinculadas por categorías a las siguientes páginas: VIAJES, ESPECIALES, EXCURSIONES, DEPORTES Y BLOGS.
    Las entradas PERSONALIZADAS están vinculadas por categorías a HOTELES exclusivamente y están clasificadas por categorías países: España, Italia etc.

    Ambas se rigen por la taxonomía general de la página.

    Después de implementar el código, revisarlo y validarlo, veo que el Back-End muestra perfectamente las tablas aunque no el contenido pero para que el Front-End muestre el contenido tengo que poner en Ajustes/Enlaces permanentes/Predeterminado y no me permite guardar Ajustes/Enlaces permanentes/estructura personalizada/%category%/%postname%.

    Tampoco puedo vibcular la página archive-hotel.php y single-hotel.php con el archivo functions.php

    Y en la Entrada Personalizada publicada los campos personalizados, aparecen con signos y comas, en lugar del texto.

    Como puedes ver son varias cosas. En general parece ir bien, pero no se donde mirar. Estoy tratado de resolverlo con los técnicos de wpml puyes a lo mejor es un problema de Slug-tralslation, pero quería saber tu opinión.

    Muchas gracias!

    Juanjo Alario

  20. Este es el código de functions.php

  21. Este es el código de archive-hotel.php o template-hotel.php:

  22. Este es el código de single-hotel.php:

  23. Hola de nuevo Juan, no se como darte las gracias por este maravilloso tutorial.
    Bueno, parece que casi todo se ha solucionado al poner este código:

    Que he encontrado revisando los comentarios de este blog, aunque no se si en este artículo o en otro relacionado con los Campos personalizados.

    Puedo ver las entradas pesonalizadas donde quiero, es decir, en Hoteles.

    También puedo ver los campos personalizados en esas entradas.

    Pero no puedo poner una estructura personalizada en Ajustes/Enlaces permanentes/Estructura personalizada ya que, al hacerlo, se pierden los enlaces y la página aparece en blanco.

    También ocurre algo que no entiendo, en algunas páginas, independientemente de donde estén o sea páginas o entradas, en el Sidebar, donde tengo puesto un widget para los Hoteles más Populares desaparece, ya te digo que solo ocurre en algunas páginas además, en las que sí aparece el Sidebar correctamente, desaparece el widget de la izquierda del footer.

    ¿Tienes alguna idea de porqué ocurre esto?

    De todas formas, mil gracias de nuevo!!!

    Juanjo Alario

     

  24. Hola de nuevo Juan,
    estas son las páginas en cuestión:

    template-hotel.php que es la que llama a los post personalizados y es la página HOTELES

    single.php que es la que llama tanto a los post personalizados como a los post normales y es la página del Hotel x como de cualquier otra entrada como por ejemplo excursiones.

    template-post-gastronomica.php que es la que llama tanto a los post normales y es la página de Excursiones gastronómicas.

    single.php para llamar a los post normales y es la página del Excursion x como de cualquier otra entrada como por ejemplo deportes.

    page.php es la que llama a las páginas normales como por ejemplo contacto.html

    Espero que sirva de ayuda

    Tengo las imágenes pero no las puedo adjuntar.
    ¿Te las puedo enviar por correo electrónico?

    Muchas gracias

  25. Hola,

    interesante el contenido el de vuestra página. Una duda me surge?

    yo tengo entradas personalizadas:

    /mecanica/entrada_mecanica_01

    hasta ahí perfecto.

    pero si quiero crear una pagina que se llame mecánica y poder editarla como una pagina desde el panel, y que entre así:

    mecanica/

    el plugin wp-types me dice: Usted no puede utilizar este slug porque ya existe una página con ese nombre. Escoja un slug diferente.

    entonces he pensado ya esta la solución es desactivar “has archive”.

    pero no, sigo con el mismo error.

    alguna idea?

     

    saludos.

     

     

  26. Hola, muy bien todo, pero quisiera saber algo si es que existe el cómo y es cómo pudiera hacer para a la hora de crear un post ya me saliera con un código por defecto, o sea voy a crear un post y al darle nuevo y salirme la pantalla ya tenga por defecto en el editor digamos por ejemplo un div de color rojo………Por favor agradecería si alguien me ayudara

    1. Hola David,

      Puedes crear una plantilla personalizada para un post personalizado concreto. Sólo tienes que llamar al archivo single-{post-type}.php, por ejemplo single-producto.php

  27. Te mando este comentario para darte las gracias….Después de varias horas , leí un artículo donde recomendaban tu post. Tenía un problema con mi plantilla e incorporar “custom fields” a un tipo de entradas personalizadas.
    Gracias a tu magnifico artículo…lo consegui.
    Thank

  28. Eres mi idolo groso ………..me acabas de despejar de todas mi dudas ……..si fuera mujer te pidiera que me hagas un hijo ……jajajajajaja grax realmente muchas gracias…………… 🙂

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *