Functie cu shortcode pentru afisarea celor mai recente articole in WordPress

Am avut de facut o mica functie de curand la un site si a trebuit sa afisez cele mai recente 3 articole de pe blog printr-un shortcode API WordPress. Iata mai jos codurile folosite.

add_shortcode( 'lastposts', 'post_list_shortcode' );

function post_list_shortcode( $atts ) {
    ob_start();
    $wp_query = new WP_Query( array(
        'post_type' => 'post',
        'posts_per_page' => 3,
        'order' => 'ASC',
        'orderby' => 'title',
    ) );

    if ( $wp_query->have_posts() ) { ?>

       <?php while ( $wp_query->have_posts() ) : $wp_query->the_post('post-home'); ?>
  
            <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
				
				<h3 class="titlupost"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
				<?php if ( has_post_thumbnail() ) : ?>
				<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
					<?php the_post_thumbnail(); ?>
				</a>
			<?php endif; ?>
			<?php
                $content = get_the_content();
                $trimmed_content = wp_trim_words( $content, 25 );
                echo $trimmed_content; 
			?>
            
        </div>
            <?php endwhile;
            wp_reset_postdata(); ?>
      
    <?php $lastpost = ob_get_clean();
    return $lastpost;
    }
}

Pentru folosire in editor se foloseste [lastposts]. Se vor afisa cele mai recente 3 articole cu thumbnail.

Se pot modifica parametri pentru a afisa mai multe articole ‘posts_per_page’ => 3 se poate schimba numarul pentru a afisa mai multe articole.

UPDATE CODE:

Un alt programator a facut un cod mult mai bun si il pun aici pentru folosire.

define( "MY_PLUGIN_SHORTCODE_LAST_POSTS", "lastposts" );
add_shortcode( 'MY_PLUGIN_SHORTCODE_LAST_POSTS', 'post_list_shortcode' );
function post_list_shortcode( $atts ) {
  $args = shortcode_atts( [
    'post_type'      => 'post',
    'posts_per_page' => 3,
    'order'          => 'ASC',
    'orderby'        => 'title',
  ], $atts, 'MY_PLUGIN_SHORTCODE_LAST_POSTS' );
  $post_list = get_posts( $args );
  if( empty( $post_list ) )
    return '';
  $response = '';
  foreach( $post_list as $post ) {
    $response .= '<div id="post-' . $post->ID . '" class="' . implode( ' ', get_post_class( 'post-home', $post->ID ) ) . '">';
    $response .=    '<h3 class="post-title"><a href="' . get_permalink( $post ). '">' . get_the_title( $post ). '</a></h3>';
    if( has_post_thumbnail( $post ) ) {
      $response .= '<a href="' . get_permalink( $post ). '">';
      $response .=    get_the_post_thumbnail( $post );
      $response .= '</a>';
    }
    $response .= get_the_excerpt( $post );
    $response .= '</div>';
  }
  return $response;
}

Pentru folosire se pune acest code [MY_PLUGIN_SHORTCODE_LAST_POSTS]

Faci un comentariu sau dai un răspuns?

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Alte articole din aceiasi categorie