There is no direct way using just Worpdress without a plugin to display posts by tag.
It s possible using e.g. this shortcode. Here the hyperlinks to the posts with the tag ‘game’ are displayed in an ordered list.
<?
$args = array(
'tag' => 'game'
);
$my_posts = get_posts($args);
if( ! empty( $my_posts ) ){
$output = '<ul>';
foreach ( $my_posts as $p ){$output .= '<li><a href="' . get_permalink( $p->ID ) . '">' . $p->post_title . '</a></li>';
}
$output .= '</ul>';
}
echo $output;
The result of calling this shortcode:
- Atomy Game AI
- Atomy Game for one human and one very naive robot
- Atomy Game for two Players with refactored code
- Atomy Game in Java Script for two players
- Atomy Game in JavaScript - Version for one player with delayed explosions
Now we want to use the same format for displaying the posts as the theme uses, like this:

To retrieve the post’s excerpt when it is not explicitly defined, we use the following function:
function get_excerpt($count, $post){
$excerpt = $post->post_content;
$excerpt = strip_tags($excerpt);
$excerpt = substr($excerpt, 0, $count);
$excerpt .='...';
return $excerpt;
}
And call it:
get_excerpt(40, $p)
To retrieve the url of the thumbnail image
wp_get_attachment_url(get_post_thumbnail_id($p->ID))
The result, with added “continue reading” (still no formatting):
And the code:
function get_excerpt($count, $post)
{
$excerpt = $post->post_content;
$excerpt = strip_tags($excerpt);
$excerpt = substr($excerpt, 0, $count);
$excerpt .='...';
return $excerpt;
}
$my_posts = get_posts( array( 'tag' => 'game' ) );
if( ! empty( $my_posts ) )
{
$output = '<div class="posts-list">';
foreach ( $my_posts as $p )
{
$permalink = get_permalink( $p->ID );
$output .= '<div class="post">
<a class="post__title" href="' . $permalink . '">' . $p->post_title . '</a>
<img class="post__image" src ="'.wp_get_attachment_url(get_post_thumbnail_id($p->ID)).'"></img>
<div class="post__excerpt">'. get_excerpt(40, $p) .' <a class="post__continue" href="' . $permalink . '"> Continue reading </a></div>
</div>';
}
$output .= '</div>';
}
echo $output;
Main source: WordPress get_posts: How to Use This Useful PHP Function to Build Lists of Posts on kinsta.com
Formatting in the next article.
Inspecting blocksy’s index.php we see that is is calling get_template_part( ‘archive’ ). In here is an excerpt from /template-parts/archive.php.
The function to display posts here is blocksy_render_archive_cards(). This function is defined in the file /incs/archive/helpers.php. I found this using a search for a string blocksy_render_archive_cards() (I was searching in the copy of the Blocky theme which I made in Windows):




