# Show posts, but hide current post

**URL:** https://forum.pinegrow.com/t/show-posts-but-hide-current-post/7908
**Category:** Pinegrow WP
**Created:** [April 11, 2023, 8:46am UTC](https://forum.pinegrow.com/t/show-posts-but-hide-current-post/7908 "2023-04-11T08:46:34Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![Takuya](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.pinegrow.com/takuya/32/5349_2.png) [@Takuya](https://forum.pinegrow.com/u/Takuya)
#### Post date: [April 11, 2023, 8:46am UTC](https://forum.pinegrow.com/t/show-posts-but-hide-current-post/7908/1 "2023-04-11T08:46:34Z")

</div>

Hi,

I have a single.php page, where it shows the post data.  
At the bottom of the page I want to display all other posts expect the current post.  
But I didn’t manage to achieve that. Could you please let me know what I’m doing wrong?

That’s my single.php

```auto
<?php get_header(); ?>

<section class="bg-black-500 pb-20 pt-48 px-6 relative sm:px-12 xl:px-20"> 
    <img src="<?php echo get_template_directory_uri(); ?>/assets/images/bg-line.alt1.png" class="absolute bottom-0 h-full right-0 z-0"/>
    <div class="relative z-10 lg:w-1/2"> 
        <div class="flex items-center mb-8">
            <h1 class="font-bold pr-10 text-4xl text-white tracking-wider uppercase"><?php the_title(); ?></h1>
            <img src="<?php echo get_template_directory_uri(); ?>/assets/images/dot-line.png" class="mt-2">
        </div>
        <p class="font-light text-white text-xl"><?php echo get_the_excerpt(); ?></p> 
    </div>                 
</section>
<section>
    <?php the_content(); ?>
</section>
<section class="bg-white px-6 py-10 relative sm:px-12 xl:px-20 xl:py-16"> 
    <img src="<?php echo get_template_directory_uri(); ?>/assets/images/bg-line.png" class="absolute bottom-0 h-full right-16 z-0"/>
    <div class="flex items-center relative z-10"> 
        <h2 class="font-bold pr-10 text-4xl text-black-800 tracking-wider uppercase"><?php _e( 'Autres SERVICES', 'solid_design' ); ?></h2>
        <img src="<?php echo get_template_directory_uri(); ?>/assets/images/bg-line.alt.png" class="mt-2"> 
    </div>                 
</section>
<section class="text-white"> 
    <div class="mx-auto relative"> 
        <?php
            $post_query_args = array(
                'post__not_in' => PG_Helper_v2::getShownPosts(),
                'post_type' => 'post',
                'nopaging' => true,
                'order' => 'ASC',
                'orderby' => 'date'
            )
        ?>
        <?php $post_query = new WP_Query( $post_query_args ); ?>
        <?php if ( $post_query->have_posts() ) : ?>
            <div class="flex flex-wrap">
                <?php while ( $post_query->have_posts() ) : $post_query->the_post(); ?>
                    <?php PG_Helper_v2::rememberShownPost(); ?>
                    <div id="post-<?php the_ID(); ?>" <?php post_class( 'bg-black-500 w-full sm:w-full lg:w-1/5' ); ?>><a href="<?php echo esc_url( get_permalink() ); ?>"><div class="flex h-28 items-center justify-center px-6"> 
                                <h3 class="font-bold mb-2 text-3xl text-center text-white"><?php the_title(); ?></h3> 
                            </div><div class="h-96 overflow-hidden">
                                <?php echo PG_Image::getPostImage( null, 'large', array(
                                        'class' => 'duration-300 ease-in-out h-full hover:opacity-100 hover:scale-110 object-cover opacity-90 w-full'
                                ), 'both', null ) ?>
                            </div></a>
                    </div>
                <?php endwhile; ?>
                <?php wp_reset_postdata(); ?>
            </div>
        <?php else : ?>
            <p><?php _e( 'Sorry, no posts matched your criteria.', 'solid_design' ); ?></p>
        <?php endif; ?> 
    </div>                 
</section>            

<?php get_footer(); ?>

```

On the link below, you can see that on the bottom the post “Cuisine” is showing, and it shouldn’t because I’m already on the post “Cuisine”.

[https://takuyaweb.synology.me/projects/solid-design/service/cuisine/](https://takuyaweb.synology.me/projects/solid-design/service/cuisine/)

Thanks for your help,  
Siegfried

---

<div class="post-metadata">

### Author: ![adamslowe](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.pinegrow.com/adamslowe/32/4590_2.png) [@adamslowe](https://forum.pinegrow.com/u/adamslowe)
#### Post date: [April 11, 2023, 1:59pm UTC](https://forum.pinegrow.com/t/show-posts-but-hide-current-post/7908/2 "2023-04-11T13:59:14Z")

</div>

I suspect part of your problem is that you don’t have a main loop in your single.php template; only the WP\_Query that is getting the list of posts. Without that main loop, the wp\_query doesn’t realize that it’s running on a post, and therefore the “skip shown posts” argument does nothing.

You basically just need to create a div with a show posts action (using the main loop) inside your site content, then put everything else inside it.

 ![image](https://canada1.discourse-cdn.com/flex036/uploads/pinegrow/original/2X/6/6bc14d6d8364a4320ed507df0d08a6788c11825f.png)

When in doubt, I like to reference the [underscores](https://underscores.me/) theme since it has minimal styling and is easy to read, but it has all the guts you need for a fully functional theme.

```auto
<?php
/**
 * The template for displaying all single posts
 *
 * @link https://developer.wordpress.org/themes/basics/template-hierarchy/#single-post
 *
 * @package Peak_Performance_Digital
 */

get_header();
?>

	<main id="primary" class="site-main">

		<?php
		while ( have_posts() ) :
			the_post();

			get_template_part( 'template-parts/content', get_post_type() );

			the_post_navigation(
				array(
					'prev_text' => '<span class="nav-subtitle">' . esc_html__( 'Previous:', 'ppd-us' ) . '</span> <span class="nav-title">%title</span>',
					'next_text' => '<span class="nav-subtitle">' . esc_html__( 'Next:', 'ppd-us' ) . '</span> <span class="nav-title">%title</span>',
				)
			);

			// If comments are open or we have at least one comment, load up the comment template.
			if ( comments_open() || get_comments_number() ) :
				comments_template();
			endif;

		endwhile; // End of the loop.
		?>

	</main><!-- #main -->

<?php
get_sidebar();
get_footer();

```

---

<div class="post-metadata">

### Author: ![Takuya](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.pinegrow.com/takuya/32/5349_2.png) [@Takuya](https://forum.pinegrow.com/u/Takuya)
#### Post date: [April 11, 2023, 2:42pm UTC](https://forum.pinegrow.com/t/show-posts-but-hide-current-post/7908/3 "2023-04-11T14:42:00Z")

</div>

Hi Adam,

Thanks for the swift reply.  
The main loop was indeed what I was missing.  
Everything is working just fine now.
