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

¿Se puede mejorar este código? Ultimo post diferente

Estas en el tema de ¿Se puede mejorar este código? Ultimo post diferente en el foro de WordPress en Foros del Web. Buenas, he visto este magnífico tip, para agregar una clase al primer post: http://www.forosdelweb.com/f118/tips...6/#post3727093 y funciona a la perfección. Pero yo necesitaba algo más que ...
  #1 (permalink)  
Antiguo 24/04/2011, 17:59
Avatar de zanguanga
Moderadora
 
Fecha de Ingreso: julio-2009
Ubicación: España
Mensajes: 1.686
Antigüedad: 14 años, 9 meses
Puntos: 429
¿Se puede mejorar este código? Ultimo post diferente

Buenas, he visto este magnífico tip, para agregar una clase al primer post: http://www.forosdelweb.com/f118/tips...6/#post3727093 y funciona a la perfección.

Pero yo necesitaba algo más que una clase pues lo que quiero es esto:

1. Primer post:
-Título de mayor tamaño que el resto (para eso la función de arriba perfecta)
-Metatags de fecha y autor
-Foto a tamaño completo
-Contenido partido a mano por el editor (post completo con el quicktag more)
-Categorias, tags y número comentarios
2. Los 3 posts siguientes:
-Miniatura flotando a la izquierda
-Título, después de la miniatura mucho más pequeño que el del primer post
-Metatags de fecha y autor
-Extracto
-Categorias, tags y número comentarios
Para ello, estoy creando un child theme de Twenty Ten (por cierto, para los que no somos programadores es un lío un poco desagradable eso de los loops en trozos, pero bueno, ese es otro tema) y finalmente he conseguido lo que quería de esta forma:


Código:
<?php /* Start the Loop */ ?>

<?php //para mostrar el primer post diferente
	$page = (get_query_var('paged')) ? get_query_var('paged') : 1;
	query_posts("paged=$page"); ?>
 
	<?php $count = 1; // Seteamos count a 1 para la primera entrada ?>
 
	<?php while (have_posts()) : the_post(); ?>

 	<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

		<?php if ((!is_paged()) && ($count == 1)){ // La primera entrada se mostrara completa ?>
 
			<h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>

			<div class="entry-meta">
				<?php twentyten_posted_on(); ?>
			</div><!-- .entry-meta -->

			<div class="entry-summary">
				<?php the_content(); ?>
			</div><!-- .entry-summary -->
 
		<?php } else { // el resto de las entradas se mostraran con miniatura y extracto ?>
 
			<?php if ( has_post_thumbnail() ) { the_post_thumbnail(thumbnail); } ?>

			<h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>

			<div class="entry-meta">
				<?php twentyten_posted_on(); ?>
			</div><!-- .entry-meta -->

			<div class="entry-summary">
				<?php the_excerpt(); ?>
			</div><!-- .entry-summary -->
 
	<?php } $count++; // Final de la funcion ?>
 
 
	<div class="entry-utility">
		<?php if ( count( get_the_category() ) ) : ?>
			<span class="cat-links">
			<?php printf( __( '<span class="%1$s">Posted in</span> %2$s', 'twentyten' ), 'entry-utility-prep entry-utility-prep-cat-links', get_the_category_list( ', ' ) ); ?>
			</span>
			<span class="meta-sep">|</span>
		<?php endif; ?>

		<?php
		$tags_list = get_the_tag_list( '', ', ' );
		if ( $tags_list ):
		?>
			<span class="tag-links">
				<?php printf( __( '<span class="%1$s">Tagged</span> %2$s', 'twentyten' ), 'entry-utility-prep entry-utility-prep-tag-links', $tags_list ); ?>
			</span>
			<span class="meta-sep">|</span>
		<?php endif; ?>

			<span class="comments-link">
				<?php comments_popup_link( __( 'Leave a comment', 'twentyten' ), __( '1 Comment', 'twentyten' ), __( '% Comments', 'twentyten' ) ); ?>
			</span>

			<?php edit_post_link( __( 'Edit', 'twentyten' ), '<span class="meta-sep">|</span> <span class="edit-link">', '</span>' ); ?>
	</div><!-- .entry-utility -->
</div><!-- #post-## -->

	<?php comments_template( '', true ); ?>


<?php endwhile; // End the loop. Whew. ?>
En la home funciona, a falta de chequearlo online, pero me pregunto:
1. ¿Hay alguna forma más simple o limpia de conseguir lo mismo?
2. ¿Cómo tendría que ser el código para que sirviera para las categorías, por ejemplo? Si uso este loop en las categorías se muestran los mismos posts que en la home, o sea, todos
__________________
Mi blog personal | Mi G+
  #2 (permalink)  
Antiguo 24/04/2011, 19:43
Avatar de j_aroche
Server Ninja
 
Fecha de Ingreso: agosto-2006
Ubicación: iPhone: 14.624481,-90.487457
Mensajes: 2.066
Antigüedad: 17 años, 8 meses
Puntos: 223
Respuesta: ¿Se puede mejorar este código? Ultimo post diferente

No entendí porque tienes esta parte:

Código PHP:
Ver original
  1. <?php //para mostrar el primer post diferente
  2. $page = (get_query_var('paged')) ? get_query_var('paged') : 1;
  3. query_posts("paged=$page"); ?>

Si quieres saber si está "paginado" (o sea $paged > 1) la llamada a is_paged() que ya usas es suficiente. Con el código que te mencioné estás haciendo otro query innecesario y es lo que impide que funcione para las categorías.
__________________
Blog: JavierAroche.com - Twitter: @j_aroche

Última edición por j_aroche; 25/04/2011 a las 00:46
  #3 (permalink)  
Antiguo 24/04/2011, 20:03
Avatar de zanguanga
Moderadora
 
Fecha de Ingreso: julio-2009
Ubicación: España
Mensajes: 1.686
Antigüedad: 14 años, 9 meses
Puntos: 429
Respuesta: ¿Se puede mejorar este código? Ultimo post diferente

Mil gracias, lo he eliminado y perfecto. Mi nivel de PHP es paupérrimo, por eso no sabía qué era lo que estorbaba, aunque notaba algo raro, sucio y prescindible
__________________
Mi blog personal | Mi G+

Etiquetas: diferente, mejorar, post, ultimo
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 17:41.