Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

poner una foto de fondo al enlace generado por wp_get_archives

Estas en el tema de poner una foto de fondo al enlace generado por wp_get_archives en el foro de WordPress en Foros del Web. Me piden que haga archivos de imagenes de todas las galerías de todos los posts. O sea por ejemplo, me meto en el enlace 2013 ...
  #1 (permalink)  
Antiguo 23/11/2013, 10:56
Avatar de noctovision  
Fecha de Ingreso: marzo-2012
Mensajes: 28
Antigüedad: 6 años, 4 meses
Puntos: 1
poner una foto de fondo al enlace generado por wp_get_archives

Me piden que haga archivos de imagenes de todas las galerías de todos los posts. O sea por ejemplo, me meto en el enlace 2013 y ahi se muestran las fotos del año 2013, en el enlace 2012 se muestran las correspondientes. Esto ya lo he logrado, usando <?php wp_get_archives('type=yearly'); ?> y despues una custom template page para mostrar las imagenes.

Sin embargo me gustaría darle mas vida al enlace generalo por wp_get_archives. Me gustaría darle altura y anchura y como fondo ponerle tal vez la última foto añadida en tal año... Se os/les ocurre como modificar la funcion para agregarle esa foto?
  #2 (permalink)  
Antiguo 24/11/2013, 11:54
Avatar de AlejandroGalvez  
Fecha de Ingreso: noviembre-2013
Mensajes: 189
Antigüedad: 4 años, 9 meses
Puntos: 49
Respuesta: poner una foto de fondo al enlace generado por wp_get_archives

Obviamente vas a tener que utilizar CSS para darle estilo al enlace, ancho y altura. Pero si quieres mostrar la última imagen del año en cada enlace, me temo que debes renunciar a la función wp_get_archives() pues no te permite llegar a tal grado de personalización.

En su lugar tendrías que crear una función php que te generara los enlaces, encargándose de recuperar la última imagen de cada año y generar el enlace mostrando esta en su interior. Si te animas a ello te resultará de ayuda observar el código original de WordPress, copiarlo para crear una función propia y modificarla tu gusto:

http://core.trac.wordpress.org/browser/tags/3.7.1/src/wp-includes/general-template.php#L929

Como observarás, para los enlaces anuales utiliza get_year_link():

http://codex.wordpress.org/Function_Reference/get_year_link

Y con ello get_archives_link( $el_enlace_get_year_link ):

http://codex.wordpress.org/Function_Reference/get_archives_link

Lo último que te falta es hacer una consulta para cada año que devuelva el enlace de la última imagen. Esto es muy fácil con WP_Query() pues las imágenes son almacenadas como posts:

Código PHP:
Ver original
  1. $anyo   =   2013;
  2.  
  3. $ultima_imagen_2013 = new WP_Query(
  4.     'post_type'             => 'attachment' // Solo recuperará imágenes asociadas a entradas, es decir, publicadas.
  5.     'post_mime_type'        => 'image/jpeg,image/gif,image/jpg,image/png', // Nos aseguramos que recuperamos un attachment del tipo imagen  
  6.     'ignore_sticky_posts'   => 1, // Para evitar pillarnos los dedos con los posts marcados como fijos.
  7.     'orderby'                   => 'date', // Ordenamos los resultados por fecha
  8.     'order'                     => 'DESC', // Además ordenados descendentemente, por lo que el primer resultado será el más reciente publicado
  9.     'date_query'                => array(
  10.         array(
  11.             'year'  => $anyo, // Indicamos a la consulta que solo recupere imágenes publicadas en 2013
  12.         )
  13.     ),
  14.     'posts_per_page'        => 1, // Solo debe recuperar una entrada, en este caso la última del año 2013
  15. );

http://codex.wordpress.org/Class_Reference/WP_Query

Esta consulta no la he probado, pero en teoría debería funcionar. El último paso es recorrer los resultados del WP_Query (aunque sea uno) y llamar a wp_get_attachment_image_src( $id_del_attachment_recuperado ) para obtener el enlace de la imagen:

http://codex.wordpress.org/Function_Reference/wp_get_attachment_image_src

Todo esto necesita armarse, mejorarse y en definitiva desarrollar; pero espero que pueda servirte como guía básica de lo que pretendes.

Etiquetas: enlace, foto, php, post
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:20.