Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/07/2013, 12:28
laura_moreno14
 
Fecha de Ingreso: octubre-2011
Ubicación: bilbao
Mensajes: 218
Antigüedad: 10 años, 1 mes
Puntos: 28
Shortcode output

Buenas a todos, hoy escribo con un nuevo problema que me esta fastidiando bastante y que puede que le sea de utilidad a más gente.

Tengo una funcion con una query que devuelve los post recientes.

Código PHP:
Ver original
  1. function recent_posts ($num, $exclude_posts, $exclude_categories) {
  2.    
  3. $args = array(
  4.     'orderby' => 'post_date',
  5.     'order' => 'desc',
  6.     'posts_per_page' => $num,
  7.     'caller_get_posts' => 1,
  8.     'post__not_in' => $exclude_posts,
  9.     'category__not_in' => $exclude_categories,
  10.     );
  11.    
  12. $the_query = new WP_Query($args); while ($the_query->have_posts()) : $the_query->the_post(); ?>
  13.  
  14. <div class="recentPost">
  15. <div class="thumbnail"><?php if (has_post_thumbnail()) { the_post_thumbnail('home3'); } ?></div>
  16. <div class="excerpt">
  17. <span class="WidgetTitulo"><a href="'<?php the_permalink(); ?>" title="<?php the_title(); ?>"> <?php the_title(); ?></a></span>
  18. <span class="date"><?php get_the_date() ?> | <?php the_author(); ?>
  19. </span>
  20. </div>
  21. </div>
  22. <!-- end recent posts-->
  23.  
  24. <?php
  25.  
  26. endwhile;  wp_reset_query();
  27.    
  28. }

Esta función funciona perfectamente pero cuando la intento usar en un shortcode, este aparece siempre antes del contenido del post, en lugar de en la linea en la que esta escrito.

Investigando un poco, resulta que los shortcodes esto ocurre porque los shortcodes tienen que retornar un string, nada de echo ni print.

El problema es que no se como conseguir esto. He probado con esto:

Código PHP:
Ver original
  1. function recent_posts ($num, $exclude_posts, $exclude_categories) {
  2.    
  3. $args = array(
  4.     'orderby' => 'post_date',
  5.     'order' => 'desc',
  6.     'posts_per_page' => $num,
  7.     'caller_get_posts' => 1,
  8.     'post__not_in' => $exclude_posts,
  9.     'category__not_in' => $exclude_categories,
  10.     );
  11.    
  12. $the_query = new WP_Query($args); while ($the_query->have_posts()) : $the_query->the_post();
  13.  
  14. $output = '<div class="recentPost">
  15. <div class="thumbnail">'. the_post_thumbnail("home3").'</div>
  16. <div class="excerpt">
  17. <span class="WidgetTitulo"><a href="'. the_permalink() .'" title="'. the_title().'">'. the_title().'</a></span>
  18. <span class="date">'.get_the_date().' | '.the_author().'
  19. </span>
  20. </div>
  21. </div>
  22. <!-- end recent posts-->';
  23.  
  24. return $output;
  25.  
  26. endwhile;  wp_reset_query();
  27.    
  28. }

Pero me devuelve:

<img src="http://www.codetocode-developments.com/fabulous/files/demo_img9-50x50.jpg" class="attachment-home3 wp-post-image" alt="demo_img9" />http://www.codetocode-developments.c...ipsum-10/Lorem ipsum asideLorem ipsum asideadmin


Cuando deberia devolverme el titulo e imagen destacada de 5 posts envueltos cada uno en un div.

Alguien que le haya pasado que pueda echarme una mano?