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í:
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):
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
add_action('init', 'codex_custom_init'); function codex_custom_init() { $labels = array( 'name' => _x('Productos', 'post type general name'), 'singular_name' => _x('Producto', 'post type singular name'), 'add_new' => _x('Añadir', 'producto'), 'add_new_item' => __('Añadir nuevo Producto'), 'edit_item' => __('Editar Producto'), 'new_item' => __('Nuevo Producto'), 'view_item' => __('Ver Producto'), 'search_items' => __('Buscar Productos'), 'not_found' => __('No se han encontrado Productos'), 'not_found_in_trash' => __('No se han encontrado Productos en la papelera'), 'menu_name' => 'Productos' ); $args = array( 'labels' => $labels, 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'show_in_menu' => true, 'query_var' => true, 'rewrite' => true, 'capability_type' => 'post', 'has_archive' => true, 'hierarchical' => false, 'menu_position' => null, 'supports' => array('title','editor','author','thumbnail','excerpt','comments') ); register_post_type('producto',$args); } //añadir filtro para asegurarnos que el texto Producto, o producto, aparece cuando el usuario actualiza un Producto add_filter('post_updated_messages', 'codex_book_updated_messages'); function codex_book_updated_messages( $messages ) { global $post, $post_ID; $messages['producto'] = array( 0 => '', // Sin uso. Los mensajes comienzan con el índice 1. 1 => sprintf( __('Producto actualizado. <a href="%s">Ver Producto</a>'), esc_url( get_permalink($post_ID) ) ), 2 => __('Campo personalizado actualizado.'), 3 => __('Campo personalizado actualizado.'), 4 => __('Producto actualizado.'), /* Ojo: %s: fecha y hora de la revisión */ 5 => isset($_GET['revision']) ? sprintf( __('Producto restaurado a revisión desde el %s'), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false, 6 => sprintf( __('Producto publicado. <a href="%s">Ver producto</a>'), esc_url( get_permalink($post_ID) ) ), 7 => __('Producto grabado.'), 8 => sprintf( __('Producto enviado. <a target="_blank" href="%s">Vista previa Producto</a>'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ), 9 => sprintf( __('Producto programado para: <strong>%1$s</strong>. <a target="_blank" href="%2$s">Vista previa Producto</a>'), // Para formatos de fecha ver http://php.net/date date_i18n( __( 'M j, Y @ G:i' ), strtotime( $post->post_date ) ), esc_url( get_permalink($post_ID) ) ), 10 => sprintf( __('Borrador de Producto actualizado. <a target="_blank" href="%s">Vista previa de Producto</a>'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ), ); return $messages; } |
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:
1'rewrite' => array( 'slug' => 'trabajos', 'with_front' => false ), - 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:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
add_action('init', 'crear_tipo_videojuegos'); function crear_tipo_videojuegos() { register_post_type( 'videojuegos', array( 'labels' => array( 'name' => __('Videojuegos'), 'singular_name' => __('Videojuego') ), 'public' => true, 'show_ui' => true, 'rewrite' => array( 'slug' => 'videojuegos', 'with_front' => false ), 'supports' => array('title','editor','author','thumbnail','excerpt','comments'), 'has_archive' => true ) ); } |
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”:
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):
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<?php /** * Archivo archive-videojuegos.php para mostrar las entradas personalizadas Videojuegos */ get_header(); ?> <div id="container"> <div id="content" role="main"> <?php while ( have_posts() ) : the_post(); ?> <div <?php post_class() ?> id="post-<?php the_ID(); ?>"> <?php the_post_thumbnail(); ?> <h2><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Enlace a %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2> <?php twentyten_posted_on(); ?> <?php comments_popup_link( __( 'Escribir un comentario', 'twentyten' ), __( '1 Comentario', 'twentyten' ), __( '% Comentarios', 'twentyten' ), 'comentarios' ); ?> <?php the_excerpt(); ?> </div> <?php comments_template( '', true ); ?> <?php endwhile; ?> </div><!-- #content --> </div><!-- #container --> <?php get_sidebar(); ?> <?php get_footer(); ?> |
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:
|
1 |
<body class="archive post-type-archive post-type-archive-videojuegos logged-in admin-bar"> |
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:
|
1 |
<div class="post-12 videojuegos type-videojuegos status-publish hentry" id="post-12"> |
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):
|
1 |
<body class="single single-videojuegos postid-5 single-format-standard logged-in admin-bar"> |
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!”:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<?php /** * Archivo single-videojuegos.php para mostrar una entrada completa de Videojuegos */ get_header(); ?> <div id="container"> <div id="content" role="main"> <h1>Esto es un videojuego!</h1> <?php /* Run the loop to output the post. * If you want to overload this in a child theme then include a file * called loop-single.php and that will be used instead. */ get_template_part( 'loop', 'single' ); ?> </div><!-- #content --> </div><!-- #container --> <?php get_sidebar(); ?> <?php get_footer(); ?> |
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.








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.
Pingback: wp-popular.com » Blog Archive » Nuevo en Wordpress 3.1: Archivos de Entradas Personalizadas | emenia.es
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
Pingback: Taxonomías avanzadas en Wordpress 3.1 | Ayuda WordPress
Gracias por el articulo. Yo con lo cazurro que soy para esto creo que lo he entendido
De nada Antonio.
De todas formas si tienes alguna duda estaré encantado de ayudarte.
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.
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!!!
Gracias Ezequiel,
Es el archivo functions.php que está dentro de tu tema.
Gracias por la respuesta!! ya me pondré a investigar!!
Saludos!
Muy buen artículo, muchos gracias!
Como puedo crear campos personalizados?
Hola Mai, quizás te pueda ayudar este artículo Campos personalizados para las Entradas personalizadas en WordPress
Muchísimas gracias
voy a echarle un vistazo
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.
Ya lo arregle se realizaba agregando el post-Type
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
hola Juan!
alguna ayuda?
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.
Hola,
el problema es que archives.php sólo muestra entradas tipo ‘post’. Prueba añadiendo esto a tu archivo functions.php:
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!
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
Gracias Dario,
Hay un plugin para seleccionar favoritos (Si es esa la funcionalidad que buscas) que te puede venir bien
http://wordpress.org/extend/plugins/wp-favorite-posts/
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.
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.
Juan una consulta:
se puede añadir añadir a las entradas personalizadas la funcionalidad que permite publicarlos como sticky post?
gracias
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!
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!
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???
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
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.
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.
Hola Alfredo,
No te sabría decir… Tienes activados los errores para ver si te muestra alguno?
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.
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.
Ok, muchas gracias, lo probare