Aprovecho a compartirles un pequeño código que desarrollé para un trabajo sobre WordPress. La idea es la siguiente: En una página principal, archivo, de categoría o cualquier otra que llame a una cantidad de entradas desde el loop usar estas condiciones:

  • Si el post tiene un excerpt generado por el usuario, mostrarlo
  • Si no tiene pero tiene el contenido separado por un more, mostrar hasta ahí
  • Si no tiene excertp del usuario ni more, autogenerar un excerpt

Para ello utilizaremos el siguiente código, el cual puede ser usado dentro de la llamada por defecto a los post o con query_posts(). En el ejemplo usaremos la opción normal.

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
   <?php global $more; $more = 0; ?>
   <?php if ( $post->post_excerpt ) { ?>
      <?php the_excerpt(); ?>
   <?php } elseif ( stristr(get_the_content('the_more_tag'), 'the_more_tag') == TRUE ) { ?>
      <?php the_content('Seguir leyendo...'); ?>
   <?php } else { ?>
      <?php the_excerpt() ?>
   <?php } ?>
   <?php endwhile; else: ?>
<?php endif; ?>

La primera línea después del loop hará que se respete el corte del more sea cual sea la parte del blog en la que estemos. Luego, con
stristr(get_the_content('the_more_tag'), 'the_more_tag') == TRUE agregamos un enlace a los posts que tengan este corte, el cual no se imprimirá sino que solo lo usaremos para diferenciarlos. El resto creo que está bastante claro.