Close
Image Alt

Crear una lista de productos con WordPress 3.0 usando Entradas personalizadas, campos personalizados y taxonomías

Una de las grandes novedades que incorpora WordPress 3.0 es la posibilidad de crear Entradas Personalizadas (Custom Post Types), es decir un nuevo tipo de entradas parecidas a las Entradas normales y a las Páginas, y que aparecerán también de manera separada en el menú de la izquierda del administrador de WordPress. ¿Qué ventajas nos ofrecen las Entradas Personalizadas? Una mayor facilidad de uso de nuestro tema, estructurando mejor los distintos tipos de entradas. Por ejemplo, si queremos insertar una lista de productos con una serie de características comunes, podemos crear una estradas personalizadas que se llamen Producto y que estén configuradas de manera específica para insertar dichos productos. En vez de decirle a nuestro cliente que cree una entrada normal y que rellene toda una serie de campos personalizados sólo utilizables para insertar un producto pero no para cualquier otra entrada, que no se equivoque con las categorías que son sólo para productos y no para el resto de entradas, etc.. ahora símplemente tendrá que hacer click en “Productos” y rellenar cada campo específico para ese tipo de entrada.

Pero como siempre, esto se verá mejor con un ejemplo. Vamos a crear una entrada personalizada que se llame “Productos”. Con el permiso de Friendware (su web la hice yo hace un par de años) vamos a usar algunos de sus juegos para PC. Cada producto va a tener un título, una descripción, un precio, un fabricante, una plataforma y una imagen.

Vamos a usar campos personalizados para el precio y el fabricante y taxonomías personalizadas para la Plataforma (en realidad Fabricante debería ser una taxonomía, pero lo pongo como campo personalizado para ver mejor cómo se crean varios).

En el administrador vamos a tener en el menú de la izquierda:

Si hacemos click sobre Añadir tendremos:

Y al hacer click sobre Editar tendremos una tabla con todos los productos:



Pero ahora viene lo mejor.
Si tenemos activados los enlaces permanentes podemos ir a una url que sea por ejemplo www.miweb.es/Productos/ donde se vean todos los productos introducidos con los estilos que hayamos definido:



Bien, ya sabemos lo que vamos a crear. Ahora vamos a ver paso a paso cómo crearlo.
No he visto ningún artículo completo que indique todos lo pasos de manera completa. Por ello me he basado en diferentes artículos y webs. Sus enlaces están al final del artículo.

Paso 1: Crear una Entrada Personalizada

La mejor manera que he encontrado para crear una Entrada Personalizada es utilizando la clase creada por Matt Wiebe. La razón es que además de crear una función que nos permite crear Entradas Personalizadas con gran facilidad, añade a la función que habitualmente crea entradas personalizadas (register_post_type) una serie de funcionalidades extra:

1. URLs personalizadas para cada Entrada Personalizada. (ejemplos http://miweb.com/productos/, http://miweb.com/productos/page/2/, http://miweb.com/productos/feed/ )
2. Archivos personalizados para cada Entrada Personalizada, por ejemplo producto/index.php o producto.php en el directorio de nuestro tema.
3. Páginas individuales personalizadas: WP busca el fichero single-producto.php (en su defecto por single.php). Con esta función podemos usar producto/single.php para una mejor organización..
4. Añade clases a body_class() y a post_class().
5. Auto genera las etiquetas apropiadas para el Administrador si no suministras una.

El punto 1 me parece muy importante, ya que WordPress 3.0, al menos en la beta 2, no crea por defecto una url donde podamos ver todas las entradas de una misma entrada personalizada (por ejemplo, todos los productos).

El código, que habría que llevar al archivo functions.php, lo podemos descargar desde la web de Matt Wiebe. Una vez tengamos ese código pegado en el archivo functions.php de nuestro tema, escribiremos a continuación para crear la Entrada Personalizada “Producto”:

Aquí está el código completo. Hay que tener en cuenta que Matt Wiebe está continuamente mejorando esta función añadiendo nuevas características, por lo que estad pendientes de sus actualizaciones.

La línea que pone ‘supports’ crea una cadena con los campos que soporta la Entrada Personalizada, en este caso el Título (title), el Contenido (editor) y la Imagen Destacada (thumbnail). Podemos ver todos los componentes posibles y más información sobre register_post_type en la web de wordpress. Como vemos, podríamos haber añadido ‘author’, ‘excerpt’ o ‘custom-fields’ por ejemplo.

Ahora podemos crear en el directorio de nuestro tema un archivo producto.php que recoja todos los productos introducidos y un archivo single-producto.php que muestre cada producto individual.

Archivo producto.php:

Ojo: En la línea p class=”caracteristicas” hemos incluido la taxonomía “Plataforma” que aún no hemos creado (la creamos más abajo).

Archivo single-producto.php:

Una vez tengamos todo este código listo podremos introducir nuestros Productos y podremos verlos todos en la url www.nuestraweb.com/Productos gracias a producto.php y podremos ver cada producto en concreto en la url www.nuestraweb.com/Productos/nombre-del-producto gracias a single-producto.php (hay que tener activados los enlaces permanentes. Si sale “página no encontrada” volved a grabar los enlaces permanentes ya que a veces necesitan actualizarse).

Paso 2- Crear los Campos Personalizados

A continuación vamos a crear los Campos Personalizados Precio y Fabricante para nuestras Entradas Personalizadas. Lo haremos siguiendo este artículo de Nettuts+. Ahora podremos darle a nuestros campos personalizados nombre propios claros para saber lo que es cada uno (en este caso Precio y Fabricante). Para ello añadimos a functions.php este código:

La primera linea indica que cuando se inicialice el panel de administración se llame a la función admin_init(). Esta función dice a WordPress que añada un área llamada “Opciones Producto” para cualquier Entrada Personalizada llamada Producto y que use la función meta_options() para mostrar los campos del formulario. Puedes leer más sobre add_meta_box aquí. meta_options() obtendrá entonces cualquier valor preexistente y lo mostrará en el formulario. Las dos lineas de acción que siguen a la primera línea hacen que cuando se grabe una entrada se llame a las funciones guardar_precio() y guardar_fabricante() que utilizan update_post_meta() para añadir o actualizar los campos personalizados “Precio” y “Fabricante”.

Paso 3 – Crear Taxonomías personalizadas asociadas

Una vez tengamos nuestras Entradas Personalizadas es posible que queramos tener una serie de Taxonomías que nos ayuden a clasificar los distintos productos según determinadas categorías. Podemos ver más información sobre las taxonomías en el artículo Taxonomías en WordPress.

Vamos a crear, como dijimos, una Taxonomía personalizada llamada “Plataforma”, donde podremos poner si el juego es para PC CD-ROM, Playstation 3, etc… Para ello escribimos en functions.php:

Puedes encontrar más información sobre la función register_taxonomy() en la web de WordPress. Aquí creamos una nueva Taxonomía llamada “Plataforma” y la asociamos a la entrada personalizada “Producto”. Para poder ver luego la taxonomía escribiríamos (como hemos visto más arriba en producto.php):

Paso 4 – Crear la tabla de productos en el panel de administración

Vimos al principio de este artículo que al hacer click sobre Editar en Producto salía una tabla con el nombre de cada producto, su descripción, precio, fabricante y plataforma. Esto no se crea por defecto. Para conseguirlo, tal y como vemos en el mismo artículo de nettuts+, hay que añadir en functions.php:

En prod_edit_columns() tenemos un array donde los índices (keys) de cada variable se usan para referenciar cierta información de las entradas que definimos en la segunda función, prod_custom_columns() y donde los valores son las cabeceras de las columnas. En prod_edit_columns() hay 6 columnas pero sólo mostramos 4 en prod_custom_columns() ya que ‘cb’ y ‘title’ son parte de los índices por defecto de WordPress para los que ya tiene asociaciones creadas.

Bueno, ¡y eso sería todo! Con este código adecuadamente incluído podemos tener las pantallas que veíamos al principio del artículo. Pero como véis hay mucho campo para ampliar las posibilidades que se nos ofrecen con las Entradas Personalizadas. Aquí hemos hecho una lista de Productos, pero podría haber sido las habitaciones de un hotel, una lista de canciones de distintos autores, una lista de libros o cualquier cosa que se nos ocurra.

Otras lecturas recomendadas

Smarter Custom Post Types
Rock-Solid WordPress 3.0 Themes using Custom Post Types
Custom post types in WordPress
Showing custom post types on your home/blog page
Custom Post Types in WordPress 3.0
Extending Custom Post Types in WordPress 3.0
Introducing WordPress 3 Custom Taxonomies

] = ‘index.php?post_type=’ . $this->post_type . ‘&paged=’ . $wp_rewrite->preg_index(1);
$new_rules[$this->post_slug . ‘/(feed|rdf|rss|rss2|atom)/?Del código de Matt Wiebe hay que destacar esta parte:

La línea que pone ‘supports’ crea una cadena con los campos que soporta la Entrada Personalizada, en este caso el Título (title), el Contenido (editor) y la Imagen Destacada (thumbnail). Podemos ver todos los componentes posibles y más información sobre register_post_type en la web de wordpress. Como vemos, podríamos haber añadido ‘author’, ‘excerpt’ o ‘custom-fields’ por ejemplo.

Ahora podemos crear en el directorio de nuestro tema un archivo producto.php que recoja todos los productos introducidos y un archivo single-producto.php que muestre cada producto individual.

Archivo producto.php:

Ojo: En la línea p class=”caracteristicas” hemos incluido la taxonomía “Plataforma” que aún no hemos creado (la creamos más abajo).

Archivo single-producto.php:

Una vez tengamos todo este código listo podremos introducir nuestros Productos y podremos verlos todos en la url www.nuestraweb.com/Productos gracias a producto.php y podremos ver cada producto en concreto en la url www.nuestraweb.com/Productos/nombre-del-producto gracias a single-producto.php (hay que tener activados los enlaces permanentes. Si sale “página no encontrada” volved a grabar los enlaces permanentes ya que a veces necesitan actualizarse).

Paso 2- Crear los Campos Personalizados

A continuación vamos a crear los Campos Personalizados Precio y Fabricante para nuestras Entradas Personalizadas. Lo haremos siguiendo este artículo de Nettuts+. Ahora podremos darle a nuestros campos personalizados nombre propios claros para saber lo que es cada uno (en este caso Precio y Fabricante). Para ello añadimos a functions.php este código:

La primera linea indica que cuando se inicialice el panel de administración se llame a la función admin_init(). Esta función dice a WordPress que añada un área llamada “Opciones Producto” para cualquier Entrada Personalizada llamada Producto y que use la función meta_options() para mostrar los campos del formulario. Puedes leer más sobre add_meta_box aquí. meta_options() obtendrá entonces cualquier valor preexistente y lo mostrará en el formulario. Las dos lineas de acción que siguen a la primera línea hacen que cuando se grabe una entrada se llame a las funciones guardar_precio() y guardar_fabricante() que utilizan update_post_meta() para añadir o actualizar los campos personalizados “Precio” y “Fabricante”.

Paso 3 – Crear Taxonomías personalizadas asociadas

Una vez tengamos nuestras Entradas Personalizadas es posible que queramos tener una serie de Taxonomías que nos ayuden a clasificar los distintos productos según determinadas categorías. Podemos ver más información sobre las taxonomías en el artículo Taxonomías en WordPress.

Vamos a crear, como dijimos, una Taxonomía personalizada llamada “Plataforma”, donde podremos poner si el juego es para PC CD-ROM, Playstation 3, etc… Para ello escribimos en functions.php:

Puedes encontrar más información sobre la función register_taxonomy() en la web de WordPress. Aquí creamos una nueva Taxonomía llamada “Plataforma” y la asociamos a la entrada personalizada “Producto”. Para poder ver luego la taxonomía escribiríamos (como hemos visto más arriba en producto.php):

Paso 4 – Crear la tabla de productos en el panel de administración

Vimos al principio de este artículo que al hacer click sobre Editar en Producto salía una tabla con el nombre de cada producto, su descripción, precio, fabricante y plataforma. Esto no se crea por defecto. Para conseguirlo, tal y como vemos en el mismo artículo de nettuts+, hay que añadir en functions.php:

En prod_edit_columns() tenemos un array donde los índices (keys) de cada variable se usan para referenciar cierta información de las entradas que definimos en la segunda función, prod_custom_columns() y donde los valores son las cabeceras de las columnas. En prod_edit_columns() hay 6 columnas pero sólo mostramos 4 en prod_custom_columns() ya que ‘cb’ y ‘title’ son parte de los índices por defecto de WordPress para los que ya tiene asociaciones creadas.

Bueno, ¡y eso sería todo! Con este código adecuadamente incluído podemos tener las pantallas que veíamos al principio del artículo. Pero como véis hay mucho campo para ampliar las posibilidades que se nos ofrecen con las Entradas Personalizadas. Aquí hemos hecho una lista de Productos, pero podría haber sido las habitaciones de un hotel, una lista de canciones de distintos autores, una lista de libros o cualquier cosa que se nos ocurra.

Otras lecturas recomendadas

Smarter Custom Post Types
Rock-Solid WordPress 3.0 Themes using Custom Post Types
Custom post types in WordPress
Showing custom post types on your home/blog page
Custom Post Types in WordPress 3.0
Extending Custom Post Types in WordPress 3.0
Introducing WordPress 3 Custom Taxonomies
] = ‘index.php?post_type=’ . $this->post_type . ‘&feed=’ . $wp_rewrite->preg_index(1);
$new_rules[$this->post_slug . ‘/?

Del código de Matt Wiebe hay que destacar esta parte:

La línea que pone ‘supports’ crea una cadena con los campos que soporta la Entrada Personalizada, en este caso el Título (title), el Contenido (editor) y la Imagen Destacada (thumbnail). Podemos ver todos los componentes posibles y más información sobre register_post_type en la web de wordpress. Como vemos, podríamos haber añadido ‘author’, ‘excerpt’ o ‘custom-fields’ por ejemplo.

Ahora podemos crear en el directorio de nuestro tema un archivo producto.php que recoja todos los productos introducidos y un archivo single-producto.php que muestre cada producto individual.

Archivo producto.php:

Ojo: En la línea p class=”caracteristicas” hemos incluido la taxonomía “Plataforma” que aún no hemos creado (la creamos más abajo).

Archivo single-producto.php:

Una vez tengamos todo este código listo podremos introducir nuestros Productos y podremos verlos todos en la url www.nuestraweb.com/Productos gracias a producto.php y podremos ver cada producto en concreto en la url www.nuestraweb.com/Productos/nombre-del-producto gracias a single-producto.php (hay que tener activados los enlaces permanentes. Si sale “página no encontrada” volved a grabar los enlaces permanentes ya que a veces necesitan actualizarse).

Paso 2- Crear los Campos Personalizados

A continuación vamos a crear los Campos Personalizados Precio y Fabricante para nuestras Entradas Personalizadas. Lo haremos siguiendo este artículo de Nettuts+. Ahora podremos darle a nuestros campos personalizados nombre propios claros para saber lo que es cada uno (en este caso Precio y Fabricante). Para ello añadimos a functions.php este código:

La primera linea indica que cuando se inicialice el panel de administración se llame a la función admin_init(). Esta función dice a WordPress que añada un área llamada “Opciones Producto” para cualquier Entrada Personalizada llamada Producto y que use la función meta_options() para mostrar los campos del formulario. Puedes leer más sobre add_meta_box aquí. meta_options() obtendrá entonces cualquier valor preexistente y lo mostrará en el formulario. Las dos lineas de acción que siguen a la primera línea hacen que cuando se grabe una entrada se llame a las funciones guardar_precio() y guardar_fabricante() que utilizan update_post_meta() para añadir o actualizar los campos personalizados “Precio” y “Fabricante”.

Paso 3 – Crear Taxonomías personalizadas asociadas

Una vez tengamos nuestras Entradas Personalizadas es posible que queramos tener una serie de Taxonomías que nos ayuden a clasificar los distintos productos según determinadas categorías. Podemos ver más información sobre las taxonomías en el artículo Taxonomías en WordPress.

Vamos a crear, como dijimos, una Taxonomía personalizada llamada “Plataforma”, donde podremos poner si el juego es para PC CD-ROM, Playstation 3, etc… Para ello escribimos en functions.php:

Puedes encontrar más información sobre la función register_taxonomy() en la web de WordPress. Aquí creamos una nueva Taxonomía llamada “Plataforma” y la asociamos a la entrada personalizada “Producto”. Para poder ver luego la taxonomía escribiríamos (como hemos visto más arriba en producto.php):

Paso 4 – Crear la tabla de productos en el panel de administración

Vimos al principio de este artículo que al hacer click sobre Editar en Producto salía una tabla con el nombre de cada producto, su descripción, precio, fabricante y plataforma. Esto no se crea por defecto. Para conseguirlo, tal y como vemos en el mismo artículo de nettuts+, hay que añadir en functions.php:

En prod_edit_columns() tenemos un array donde los índices (keys) de cada variable se usan para referenciar cierta información de las entradas que definimos en la segunda función, prod_custom_columns() y donde los valores son las cabeceras de las columnas. En prod_edit_columns() hay 6 columnas pero sólo mostramos 4 en prod_custom_columns() ya que ‘cb’ y ‘title’ son parte de los índices por defecto de WordPress para los que ya tiene asociaciones creadas.

Bueno, ¡y eso sería todo! Con este código adecuadamente incluído podemos tener las pantallas que veíamos al principio del artículo. Pero como véis hay mucho campo para ampliar las posibilidades que se nos ofrecen con las Entradas Personalizadas. Aquí hemos hecho una lista de Productos, pero podría haber sido las habitaciones de un hotel, una lista de canciones de distintos autores, una lista de libros o cualquier cosa que se nos ocurra.

Otras lecturas recomendadas

Smarter Custom Post Types
Rock-Solid WordPress 3.0 Themes using Custom Post Types
Custom post types in WordPress
Showing custom post types on your home/blog page
Custom Post Types in WordPress 3.0
Extending Custom Post Types in WordPress 3.0
Introducing WordPress 3 Custom Taxonomies

] = ‘index.php?post_type=’ . $this->post_type;

$wp_rewrite->rules = array_merge($new_rules, $wp_rewrite->rules);
return $wp_rewrite;
}

public function register_post_type() {
register_post_type( $this->post_type, $this->args );
}

public function template_include( $template ) {
if ( get_query_var(‘post_type’) == $this->post_type ) {

if ( is_single() ) {
if ( $single = locate_template( array( $this->post_type.’/single.php’) ) )
return $single;
}
else { // loop
return locate_template( array(
$this->post_type . ‘/index.php’,
$this->post_type . ‘.php’,
‘index.php’
));
}

}
return $template;
}

public function body_classes( $c ) {
if ( get_query_var(‘post_type’) === $this->post_type ) {
$c[] = $this->post_type;
$c[] = ‘type-‘ . $this->post_type;
}
return $c;
}

} // end SD_Register_Post_Type class

/**
* A helper function for the SD_Register_Post_Type class. Because typing “new” is hard.
*
* @author Matt Wiebe
* @link http://somadesign.ca
*
* @uses SD_Register_Post_Type class
* @param string $post_type The post type to register
* @param array $args The arguments to pass into @link register_post_type(). Some defaults provided to ensure the UI is available.
* @param string $custom_plural The plural name to be used in rewriting (http://yourdomain.com/custom_plural/ ). If left off, an “s” will be appended to your post type, which will break some words. (person, box, ox. Oh, English.)
**/

if ( ! function_exists( ‘sd_register_post_type’ ) && class_exists( ‘SD_Register_Post_Type’ ) ) {
function sd_register_post_type( $post_type = null, $args=array(), $custom_plural = false ) {
$custom_post = new SD_Register_Post_Type( $post_type, $args, $custom_plural );
}
}
}

sd_register_post_type( ‘Producto’ );

Del código de Matt Wiebe hay que destacar esta parte:

La línea que pone ‘supports’ crea una cadena con los campos que soporta la Entrada Personalizada, en este caso el Título (title), el Contenido (editor) y la Imagen Destacada (thumbnail). Podemos ver todos los componentes posibles y más información sobre register_post_type en la web de wordpress. Como vemos, podríamos haber añadido ‘author’, ‘excerpt’ o ‘custom-fields’ por ejemplo.

Ahora podemos crear en el directorio de nuestro tema un archivo producto.php que recoja todos los productos introducidos y un archivo single-producto.php que muestre cada producto individual.

Archivo producto.php:

Ojo: En la línea p class=”caracteristicas” hemos incluido la taxonomía “Plataforma” que aún no hemos creado (la creamos más abajo).

Archivo single-producto.php:

Una vez tengamos todo este código listo podremos introducir nuestros Productos y podremos verlos todos en la url www.nuestraweb.com/Productos gracias a producto.php y podremos ver cada producto en concreto en la url www.nuestraweb.com/Productos/nombre-del-producto gracias a single-producto.php (hay que tener activados los enlaces permanentes. Si sale “página no encontrada” volved a grabar los enlaces permanentes ya que a veces necesitan actualizarse).

Paso 2- Crear los Campos Personalizados

A continuación vamos a crear los Campos Personalizados Precio y Fabricante para nuestras Entradas Personalizadas. Lo haremos siguiendo este artículo de Nettuts+. Ahora podremos darle a nuestros campos personalizados nombre propios claros para saber lo que es cada uno (en este caso Precio y Fabricante). Para ello añadimos a functions.php este código:

La primera linea indica que cuando se inicialice el panel de administración se llame a la función admin_init(). Esta función dice a WordPress que añada un área llamada “Opciones Producto” para cualquier Entrada Personalizada llamada Producto y que use la función meta_options() para mostrar los campos del formulario. Puedes leer más sobre add_meta_box aquí. meta_options() obtendrá entonces cualquier valor preexistente y lo mostrará en el formulario. Las dos lineas de acción que siguen a la primera línea hacen que cuando se grabe una entrada se llame a las funciones guardar_precio() y guardar_fabricante() que utilizan update_post_meta() para añadir o actualizar los campos personalizados “Precio” y “Fabricante”.

Paso 3 – Crear Taxonomías personalizadas asociadas

Una vez tengamos nuestras Entradas Personalizadas es posible que queramos tener una serie de Taxonomías que nos ayuden a clasificar los distintos productos según determinadas categorías. Podemos ver más información sobre las taxonomías en el artículo Taxonomías en WordPress.

Vamos a crear, como dijimos, una Taxonomía personalizada llamada “Plataforma”, donde podremos poner si el juego es para PC CD-ROM, Playstation 3, etc… Para ello escribimos en functions.php:

Puedes encontrar más información sobre la función register_taxonomy() en la web de WordPress. Aquí creamos una nueva Taxonomía llamada “Plataforma” y la asociamos a la entrada personalizada “Producto”. Para poder ver luego la taxonomía escribiríamos (como hemos visto más arriba en producto.php):

Paso 4 – Crear la tabla de productos en el panel de administración

Vimos al principio de este artículo que al hacer click sobre Editar en Producto salía una tabla con el nombre de cada producto, su descripción, precio, fabricante y plataforma. Esto no se crea por defecto. Para conseguirlo, tal y como vemos en el mismo artículo de nettuts+, hay que añadir en functions.php:

En prod_edit_columns() tenemos un array donde los índices (keys) de cada variable se usan para referenciar cierta información de las entradas que definimos en la segunda función, prod_custom_columns() y donde los valores son las cabeceras de las columnas. En prod_edit_columns() hay 6 columnas pero sólo mostramos 4 en prod_custom_columns() ya que ‘cb’ y ‘title’ son parte de los índices por defecto de WordPress para los que ya tiene asociaciones creadas.

Bueno, ¡y eso sería todo! Con este código adecuadamente incluído podemos tener las pantallas que veíamos al principio del artículo. Pero como véis hay mucho campo para ampliar las posibilidades que se nos ofrecen con las Entradas Personalizadas. Aquí hemos hecho una lista de Productos, pero podría haber sido las habitaciones de un hotel, una lista de canciones de distintos autores, una lista de libros o cualquier cosa que se nos ocurra.

Otras lecturas recomendadas

Smarter Custom Post Types
Rock-Solid WordPress 3.0 Themes using Custom Post Types
Custom post types in WordPress
Showing custom post types on your home/blog page
Custom Post Types in WordPress 3.0
Extending Custom Post Types in WordPress 3.0
Introducing WordPress 3 Custom Taxonomies

Comments

  • Me parece genial estos articulos de gran calidad en español!!

    Desde ya, les daré difusión desde mi humilde blog 😉

    Saludos

    31 May, 2010
    reply
  • muy buen tutorial!!! gracias por el recurso

    31 May, 2010
    reply
  • Dani

    Brutal de nuevo!
    La simpleza de Wp es apabullante…

    16 June, 2010
    reply
  • Brad

    Do you have a downloadable demo of the code? I’m having some problems due to translation issues.. 😛

    Thanks

    -Brad

    25 June, 2010
    reply
  • toni

    muy beno el artículo,

    realmente te felicito.

    trabajando todo el código, he visto que hay un error a la hora de crear los “custom field”, más bien a la hora de grabarlos, ya que si luego se realizan cambios en function.php, si pierden todos los valores de los “custom field” para todos los “post”.

    Nettuts+, comenta en su página este error.

    saludos

    14 July, 2010
    reply
  • Buenas, excelente tutorial, pero tengo el error que comenta @toni, al editar una entrada se borran los campos personalizados.
    ¿Cómo puedo arreglarlo?

    http://sants.coop/les-cooperatives-de-sants/

    los campos que utilizo son contacto, dirección para crear las fichas.

    mil gracias.

    20 September, 2010
    reply
  • martin

    tal cual lo dice toni, quiero cargar un producto y no me muestra el campo correspondiente para registrarlo …

    sería bueno encontrar la solucion, dado que mi blog se ve muy diferente a las imagenes que has posteado al inicio del articulo

    4 October, 2010
    reply
  • Grandísimo post, hacía mucho no leía algo de wordpress tan alto y claro.

    27 October, 2010
    reply
  • tremendo aporte…

    apropósito, llegué aquí buscando como usar la función add_rewrite_rule de wordpress, he leido bastante y he implmentado los concejos al pié de la letra pero no logro hacer que wordpress reconozca la regla, alguna idea por ahí??

    gracias

    10 December, 2010
    reply
  • martin

    Bueno, logré arreglar el bug de los campos personalizados que se borran solos ,

    el fix es el siguiente: hay que agregar una línea a la función que guarda los campos personalizados; las mismas entonces quedan así:


    function guardar_precio(){
    global $post;
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
    return $post->ID;
    }
    update_post_meta($post->ID, "precio", $_POST["precio"]);
    }
    function guardar_presentacion(){
    global $post;
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
    return $post->ID;
    }
    update_post_meta($post->ID, "presentacion", $_POST["presentacion"]);
    }

    y ahora sí quedan grabados los inputs de los campos personalizados!

    saludos

    13 December, 2010
    reply
  • Me vino de 100, estoy renovando mi sitio y con tu post se me vinieron muchas cosas a la cabeza Juan.

    No había leído los comentarios, tenía también el mismo error que se borraban los post al editar functions.php. Gracias Martin!

    15 December, 2010
    reply
  • martin

    @Juan & @Zean :

    gracias y saludos

    la verdad que Juan se paso con el artículo, es cierto que ahora nos vienen ideas nuevas de como armar wordpress,

    15 December, 2010
    reply
  • Para darle un mejor toque de diseño a los label e input les dejo el siguiente code:

    Saludos

    17 December, 2010
    reply
  • En label ejemplo:
    label style=”width:100px;display:inline-block”>

    17 December, 2010
    reply
  • Marcelo

    Hola Juan, me encanto el tuto, ahora bien queria saber que plugin es el mas completo y recomendable para hacer esto mismo, pero no a mano

    23 January, 2011
    reply
  • Buenas noches,

    Muchas gracias por el artículo, me ha sido de gran ayuda. Configurando todo en local funciona perfectamente, pero en el servidor, con la version 3.0.3 y la 3.0.4 me da un error

    Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or ‘}’ in /var/www/vhosts/pegasa.es/httpdocs/wp-content/themes/pegasa/functions.php on line 44

    A alguien más le ha pasado.

    Muchas gracias de antemano.

    28 January, 2011
    reply
  • Muy buen tutorial, gracias.

    Pero tengo un problema, no muestra los productos; no tenia activos los permalinks, los active, actualize el del producto y aún asi me dice “No encontrado”

    Ps. note que si cambiaba el en lace de miweb.com/producto por miweb.com/productos si me muestra el listado, pero al querer ver el producto el en lace se cambia automaticamente a miweb.com/producto y no muestra nada.

    31 January, 2011
    reply
  • Santiago Buades

    Bueno, después de solucionar el tema de la compatibilidad de la función no consigo listar los productos.

    La página http://www.misitio.com/Producto/nombre-producto si que me muestra el producto, pero no me cuando quiero ver
    http://www.misitio.com/Producto me dice “No se encuentra la pagina”. Luego parece que hay problemas también cuando hay una página single.php, que deja de funcionar single-producto.php

    Alguna solución???

    Muchas gracias!

    12 February, 2011
    reply
  • Hola, mil gracias por el tutorial, he realizado todos los pasos con la última version del script de Matt Wiebe, quisiera saber si en la administración hay forma de que en la table que se crea uno pueda filtrar los resultados según el título de la columna.
    y otra dudahice algo y la opción de editar y eliminar se me borró que puede ser, gracias, buenísimo el tuto me sirvió mucho.

    24 February, 2011
    reply
    • Edu Lopez

      Hola. Ayer actualicé tambien a la última versión del script y me occurre lo mismo. No puedo editar ni borrar entradas creadas anteriormente con custom post type y verve meta boxes. Gracias por el tutorial, está genial.

      1 March, 2011
      reply
  • ¡Es oro molido! Excelente artículo muchas felicidades. Que esté en español es una ayuda enorme, aunque no tengo problema con el inglés, no hay como leer en tu idioma.

    20 September, 2011
    reply
  • Luisa Gomez

    Muy bueno el articulo, la verdad he buscado muchos ejemplos de cosas para wordpress y me sorprendi cuando vi este, es de gran ayuda, muchas gracias, voy a probarlos.

    14 October, 2011
    reply
  • Pues a mi todo esto de las taxonomias y las entradas personalizadas me parece innecesario… Hasta hace poco no tenía ni idea de lo que eran y diseñe una web con todo lo que se supone que hacen éstas tan sólo haciendo un bueno uso de las condicionales y de los campos personalizados. Podéis verla online: Susurrame.es

    El resultado es el mismo y basta con tener conocimientos básicos de WP.

    5 November, 2011
    reply
  • Javier

    Hola, estoy revisando información sobre los custom post fields, y me gustaría si podríais confirmar que al crear varios campos personalizados para un Post Type, por ejemplo ‘producto’, estos campos también apareceran y se guardarán vacios en los post normales de wordpress. He creado un Post Type ‘producto’ con 4 campos nuevos, y cuando hago un nuevo post del blog (no ‘producto’ ) al guardar el post me aparecen los 4 campos vacíos del post type ‘producto’. Esto es así? si creo 4 post types con varios campos, se guardan todos juntos y vacíos?

    Gracias y saludos

    16 March, 2012
    reply
      • Javier

        Gracias por la respuesta. Los campos personalizados no salen visibles como tales para el resto de entradas, pero si que se muestran al activar las ‘opciones de pantalla’ -> Campos personalizados.

        He usado este código:

        Me preocupa que se vayan acumulando campos en la base de datos y que se guarden vacíos incluso al crear una entrada básica.

        16 March, 2012
        reply
          • Javier

            Confirmado, se guardan los campos vacios en la tabla wp_postmeta.

            Entonces, ¿esto por definición de los campos personalizados debería ser así o puede ser un error mio de programación con los campos personalizados?

            Pienso que es un tema importante antes de empezar a crear campos personalizados para cualquier proyecto.

            Gracias y saludos.

            16 March, 2012
          • Gustavo

            Buenas a todos,
            Ante todo muy buen articulo.
            No se si serviria, pero para evitar que se graben los campos vacíos se me ocurre añadir la siguiente linea en la función de guardado del campo.

            Simplemente lo que he añadido es el condicional para que solo actualice con el campo tipo si el post_type es igual a mi tipo de entrada.

            Un saludo

            11 September, 2012
  • Adrian

    Hola Juan, estuve utilizando este tutorial, mi problema es que cuando voy a crear un producto no me aparece la opción de seleccionar la Plataforma, porque sera??
    si podes responderme a mi correo mejor, sino no hay problema
    muchas gracias y felicitaciones por el tutorial.!

    Saludos.!

    19 March, 2012
    reply
    • Oye, pues me esta pasando exactamente lo mismo! No se porque la taxonomia no esta funcionando, del resto todo perfecto.

      Saludos, ojala puedan responderme.

      17 July, 2012
      reply
  • Greed

    Por más que lo intento no logro listar los elementos de mi tipo de post, el single-viaje funciona, pero el viaje.php me lleva a la home page y no aparece nada. En este momento estoy usando el tema prospect. Si alguien saber que está ocurriendo, por favor ayudeme

    9 June, 2012
    reply
    • Greed

      Ya no se preocupen por responder. Logré solucionar el problema creando una variación para que se listara perfectamente y poner administrar la forma (aunque me dio un poco de flojera hacerlo XD)

      10 June, 2012
      reply
  • Excelente post….lo pondre a prueba para una guia de negocios

    14 September, 2012
    reply
  • Hola,

    Hice los cambios necesarios y al entrar a un producto específico no tengo problemas, pero cuando quiero ver la Galería en “producto.php” no me lo muestra y me sale Error 404.

    ¿Que podré hacer? Gracias.

    21 September, 2012
    reply
  • Estimados.
    Realice este ejemplo y me funciona OK, tengo otro y también me funciona OK, ahora mi pregunta, necesito dejar que se registren los usuarios y este esta en “autor”, ósea cualquiera puede registrarse e ingresar nuevos productos…
    Pero probé que al ingresar en “añadir”, y me voy al tiro a realizar clic en “Publicar” sin escribir ningún texto en ninguna parte, queda registrado como un nuevo Producto, pero este esta todo en blanco…
    ósea que se puede realizar para “validar los campos” en Producto al igual que en “Entradas”?
    Gracias de ante mano..

    19 November, 2012
    reply
  • Desde ya muchas gracias por la informacion valiosa relacionado a WordPress que realizas , la verdad del caso aqui viendo muchos articulos que me han interesado y he aprendido mucho.
    Tanto tanto con el articulo de Taxonomías en WordPress https://www.emenia.es/taxonomias-en-wordpress/ ,
    tambien como crear Entradas Personalidas
    https://www.emenia.es/nuevo-wordpress-3-1-archivos-entradas-personalizadas/
    y todo me ha funcionado de maravilla. sumando todo eso, más este articulo esta genial…..

    Pero disculpa mi ignorancia al respecto ( estoy haciendo mis pininos en PHP ) , lo que sucede que cuando exporto la ENTRADA creada de SERIES ( al igual que PRODUCTOS ) en la cual ya le implemente varias taxonomias .
    No puedo realizarlo por fechas y menos realizarlo escogiendo las TAXONOMIAS que deseo.

    Porque al exportar la ENTRADA PERSONALIZADA ” SERIES ” unicamente se puede realizar todo de golpe. Ya tengo muchos articulos vinculados , y en la medida que avanza el tiempo el ARCHIVO de EXPORTACION aumenta su TAMAÑO.

    ¿ quisiera saber si se puede realizar algo al respecto , o habrá que añadir alguna funcion al PLUGIN IMPORT ?

    Gracias por Todo y espero no incomodar a nadie.
    Suerte XD

    27 November, 2012
    reply
      • Desde ya Gracias por tus consejos .
        Si la exportacion lo esta realizando atravez de Herramientas / Exportar .Voy a poner en PRACTICA tus valiosos consejos probando ambas alternativas.
        Gracias , y Exito XD

        27 November, 2012
        reply
  • Daniel

    Hola, muy buen post. Antes de formular mi pregunta quiero que sepan que soy un novatillo en esto del WordPress, así que por fa, paciencia jeje.

    Bien, mis preguntas son: ¿dónde y cómo debo pegar el código de Matt W.?
    ¿Y cuál es el código que debo pegar?

    Saludos desde Dominicana.

    Gracias de antemano.

    6 December, 2012
    reply
  • iok

    excelente tuto… pero tengo una duda….??? se podrian mostrar esos videojuegos ordenados por taxonomia (en este caso plataforma) independientemente del orden en el que se hayan introducido en el backend???

    10 May, 2013
    reply
  • Hola, me funciona perfecto y de maravila el tuto…

    Pero como siempre wordpress es un reto a las ideas…las cosas se van complicando!!!

    Tengo una pregunta….

    Yo cree el custom post type para libros, pero además creé otro para Videos, como haciendo los dos por separado se iba mal pues estan juntos así:

    Y ahora viene el truco…

    quiero agregar 2 meta box a libros y otro distinto para videos pero duplicandolo y cambiando los valores no funciona….alguna sugerencia?

    Asi quedó mi código, y no hace falta que lo digan…está mal porque murió….con el metabox de libros… o sea autor y editorial funcionó perfect…para videos hice duplicarlo y que todo colapsara y se ve en blanco

    De ante mano te agradezco una ayuda

    10 June, 2014
    reply
  • Excelente guia me sirvio de mucho para realizar mis páginas webs con seccion de productos.

    16 September, 2016
    reply

Post a Comment