Imaginemos un blog de música en el que se pasa revista a las últimas novedades. Aparte de la crítica, deberá ofrecer información básica como el nombre del autor o grupo, estilo musical, etc. La forma más sencilla de ofrecer estos datos no es otra que las taxonomías. Por lo tanto, lo primero será ponerlas en marcha: Taxonomías avanzadas en WordPress 3.1.
El segundo paso sería añadir una nueva página donde se mostrara un listado de todos los autores o grupos musicales, otra con los estilos musicales, etc. Para ello usaríamos la función get_terms. Así lo hacemos y vamos escribiendo entradas hasta que nos encontramos con que, por ejemplo, el número de los primeros supera los mil. Por tanto, decidimos dividir el listado en varias páginas.
¡Ojo! NO estamos hablando del campo "author" que identifica a quien publica una entrada sino de los autores que han compuesto la música.
El tercer paso es preparar una plantilla (podemos usar como base el archivo page.php). En nuestro caso podemos eliminar todo excepto las divisiones principales (dependerá de cada tema) y las llamadas al header, sidebar y footer. El archivo resultante, en lugar de page_personalizada.php, lo llamaremos listado-autores.php y en el encabezamiento pondremos:
<?php /* Template Name: Listado autores */ ?>
Todo el código que se muestra a continuación debe insertarse en el archivo listado-autores.php.
Cuarto paso: construir el array y lo necesario para paginar:
<?php $page = ( get_query_var('paged') ) ? get_query_var( 'paged' ) : 1; $per_page = 300; $offset = ( $page-1 ) * $per_page; $args = array( 'orderby' => 'slug', 'number' => $per_page, 'offset' => $offset, 'paged' => $paged ); ?>
La variable $per_page determina el número de autores a mostrar en cada página y $orderby el orden en el que se mostrarán. Recomiendo usar slug para evitar errores con ciertos caracteres. El resto de las líneas no deben modificarse.
Quinta parte: llamar a la función get_terms y ejecutar un bucle. Nota: Para no alargar el comentario en demasía, omito la parte que permite mostrar el listado en tres columnas e indico solo la forma para una lista sin ordenar. Si alguien está interesado en el código completo, que me lo pida.
Nota: autor es el nombre de la taxonomía. Debéis cambiarlo por el que corresponda.
<?php $terms = get_terms("autor", $args); echo '<ul>'; foreach ($terms as $term) { echo '<li><a href="'. get_term_link($term->slug, 'autor') . '" title="' . $term->count . ' artículos">'. $term->name.'</a></li>' . "\n"; } echo '</ul>'; ?>
Sexta parte: el código necesario para mostrar las páginas.
<?php $total_terms = wp_count_terms('autor'); $pages = ceil($total_terms/$per_page); if( $pages > 0 ): echo '<div class="paginterna">'; for ($pagecount=1; $pagecount <= $pages; $pagecount++): if ($paged == $pagecount) : $ruta = '<span class="maspaginas">Pág.' . $pagecount . '</span>'; else: if ($pagecount == 1 and $paged <=1): $ruta = '<span class="maspaginas">Pág.' . $pagecount . '</span>'; else: $ruta = '<span class="maspaginas"><a href="'.get_permalink().'page/'.$pagecount.'/">Pág. '.$pagecount.'</a></span>'; endif; endif; echo $ruta; endfor; echo '</div>'; endif; ?>
Como podéis comprobar, hemos usado dos estilos: paginterna y maspaginas. Lo mismo de antes; si alguien está interesado que me lo diga.
Finalmente creamos una nueva página y en el apartado "Plantilla" (sección "Atributos de página") seleccionamos "Listado autores" (ver el tercer paso).
Enlace permanente
Hola.
Yo estoy intentando conseguir que para una custom taxonomy haya paginación, pero no lo consigo.
Tengo el archivo taxonomy-bicis.php que tendría que añadir en este archivo para que haya paginación.
Muchas gracias.
Un saludo.
Enlace permanente
En principio no tendrías que añadir nada. Si el archivo taxonomy-bicis.php está basado en uno de los archivos de tu tema (archive, category o incluso en el index), la paginación es automática y su valor será el que hayas establecido en Ajustes > Lectura.
Si quieres, pega el código de ese archivo en http://tinypaste.com/ y luego me pasas el enlace para echarle un vistazo.
Enlace permanente
Ante todo gracias por la contestación.
Bicicletas es un custom post type y tipo es la taxonomía, perdón por el fallo al explicarme, así que lo que tengo es el archivo taxonomy-tipo.php
El código: http://tinypaste.com/89163cf9
Lo que quiero conseguir es paginación al escribir dominio.com/bicicletas/tipo1 se listen el número de bicicletas del tipo 1 que indique y así con más tipos.
¿Dónde está Ajustes > Lectura?
Enlace permanente
No se si lo que quiero se podrá hacer con lo que has explicado.
Yo quisiera que los usuarios registrados de mi blog, lo estoy haciendo, pudieran poner en él, los eventos que van a desarrollar, indicando la dirección web del mismo y los datos que se le pidieran en un formulario.
Estos eventos deberían salir en una pagina del blog como una lista numerada.
Cada usuario debería recibir el aviso de que hay un evento nuevo.
Gracias a ti y a cuantos "pierden" su tiempo enseñando a los demás.
Un saludo.
Antonio
Enlace permanente
Hola
He seguido tus indicaciones y me lista los autores perfectamente. El problema es que me da error 404, página no encontrada al paginar, es decir, no hace el paginado correctamente. He actualizo los permanent links y así y todo sigue saliendo el problema.
Tenéis idea de la causa
Muchas gracias
Enlace permanente
Lo solucione, el problema era cambiar esta regla en la taxonomía:
'rewrite' => true,
por
'rewrite' => false,
Enlace permanente
Hola nuevamente, he detectado otro problema y es que ahora pagina perfectamente pero la url del autor no la pone amigable sino así: http://site.com/?autores=nombre-apellidos
y eso es debido al cambio de true por false. como se puede ajustar ambas cosas. veo que en tu sitio funciona a la perfección
muchas gracias de nuevo
Enlace permanente
Deja el rewrite como true y después cambia los enlaces permanentes a "predeterminado". Comprueba si todo va bien. Si la respuesta es afirmativa, cambia los enlaces a otra opción y vuelve a comprobar. Ya me dirás.
Otra opción es la siguiente. Prueba a sustituir
'rewrite' => true
por
'rewrite' => array( 'slug' => 'autores' )
Enlace permanente
Sigue sin funcionar , si uso
'rewrite' => array( 'slug' => 'autores' )
entonces no hace el paginado
Muchas gracias
Enlace permanente
Pega el código que has usado en http://tinypaste.com/ y luego me pasas el enlace para echarle un vistazo. A ver si vemos por qué no funciona.
Enlace permanente
Hola! Habia intentado hacerlo con los post personalizados y taxonomias, en el que creo una entrada elijo la taxonomia
por ejemplo:
Noticias > (Post personalizados)
1.Cultura > (taxonomias)
2.Tecnologia > (taxonomias)
3.Entretencion > (taxonomias)
pero al crear un post el enlace permanente queda asi
wwww.miweb.com/noticias/nombre-de-la-entrada
y el resultado deberia ser asi
wwww.miweb.com/noticias/cultura/nombre-de-la-entrada
la idea es que la taxonomia tambien se integre al permanent link (no se si funcionan asi las taxonomias?)
Saludos!
Enlace permanente
Lo que necesitas es cambiar la estructura de los enlaces permanentes, y siento decirte que no tengo ni idea de cómo se podría hacer. He buscado a ver si había algo en los foros y la soluciones que he encontrado son complejas. Creo, no obstante, que el plugin Custom Post Type Permalinks podría servirte.
Enlace permanente
Solo quiero comentar para agradecer el codigo, me he pasado mas de 5 dias buscando una solucion y por fin la pude hallar, muchisimas gracias, funciona perfecto para mi.
Saludos desde Argentina
Enlace permanente
Me alegro de que haya sido útil el recurso.
Un saludo.