' . get_the_excerpt() . '
Vamos a crear un Shortcode para mostrar entradas o páginas recientes donde podrás decidir con atributos en cada uno el número a mostrar, si añadir o no la imagen, el extracto, por categoría, en que orden… etc.
Related Articles
Lo primero como siempre es añadir un código en functions.php o en un plugin que hayas creado para shortcodes.
// Crear shortcodes de entradas recientes
function recent_posts_shortcode( $atts ) {
/* Get the shortcode attributes
----------------------------------- */
$a = shortcode_atts( array(
'posttype' => 'post', // Mostrar post type
'cat' => '', // Limitar por categorías
'exclude_ids' => '', // Exluir posts
'columns' => '2', // Varias columnas
'show' => '5', // Número de post para mostrar
'image' => 'yes', // Mostrar imagen
'excerpt' => 'yes', // Mostrar extracto
'orderby' => '', // Ordenar por
'order' => 'asc', // Ordenar ascendente o descendente
'ignore_sticky' => 'yes', // Ignorar Sticky Posts
'class' => '' // Añadir CSS para este shortcode
), $atts );
/* Build up the WP Query
----------------------------------- */
// Which post type to use?
$args = 'post_type=' . $a['posttype'];
// Display how many posts (use -1 to display all posts)
$args .= '&posts_per_page=' . $a['show'];
// should the posts be limited to a set category?
$args .= ( $a['cat'] ? '&category_name=' . esc_attr( $a['cat'] ) : '' );
//Exclude certain posts by their post IDs
if( $a['exclude_ids'] ) {
$exclude_ids = esc_attr( array( $a['exclude_ids'] ) );
$args .= '&post__not_in=' . $exclude_ids;
}
// Order Posts by
$args .= ( '' != $a['orderby'] ? '&orderby=' . esc_attr( $a['orderby'] ) : '' );
$args .= ( '' != $a['orderby'] && 'asc' == $a['order'] ? '&order=ASC' : '' );
// Ignore sticky posts
$args .= '&ignore_sticky_posts=' . ( 'yes' == $a['ignore_sticky'] ? '1' : '0' );
// Do the query with all the arguments that we built above
$wpab_query = new WP_Query( $args );
// If the column number is set, convert the columns to the CSS grid size
$columns = esc_attr( $a['columns'] );
switch ( $a['columns'] ) {
case '3':
$columns = '4';
break;
case '2':
$columns = '6';
break;
case '1':
$columns = '12';
break;
}
/* Loop through post items
----------------------------------- */
$blog = '';
if ( $wpab_query->have_posts() ) {
$blog .= '';
$blog .= '';
$blog .= get_the_post_thumbnail( get_the_ID(), $img_size, $atts );
$blog .= '';
$blog .= '';
endif;
/* The title
--------------------------- */
$blog .= '';
$blog .= '';
$blog .= get_the_title();
$blog .= '';
$blog .= '
';
$blog .= '';
/* The excerpt
--------------------------- */
if ( 'yes' == $a['excerpt'] ) :
$blog .= '';
endif;
$blog .= '';
endwhile;
$blog .= '';
}
wp_reset_postdata();
/* Output shortcode
----------------------------------- */
return $blog;
}
add_shortcode( 'recent_posts', 'recent_posts_shortcode' );
Una vez añadido el Snippet con las funciones ya puedes colocar el shortcode donde quieras.
[recent-posts] Con el shortcode simple te aparecerán 5 entradas con imagen, extracto, de todas las categorías y ordenadas por fecha descendente.
Pero, esto lo puedes cambiar a tu gusto de la siguiente manera
[recent-posts show=”3″ image=”no” cat=”5″ excerpt=”no” orderby=”title” class=”recent-post”]
En este caso se mostrarán 3 entradas sin imagen, ni excerpt y ordenadas por título y además, le hemos puesto una clase recent post para cambiar su diseño.
Los cambios que puedes hacer son:
post: page/post/custompost
cat: ID de categorías a mostrar
exclude_ids: ID de las entradas que se excluyen
show: Número de post que se muestran
image: yes/no
excerpt: yes/no
orderby: ASC/DESC
order: none/ID/author/title/date/modified/rand/comment_count
ignore_sticky: 1/2/3
class: class_name
Espero que te haya servido de ayuda