Да, действительно
have_posts($post_id)
не работает, исправил. Получился вот такой вариант
<?php $getcat = get_the_category();?>
<?php $cat = $getcat[0]->cat_ID; ?>
<?php $post_id = get_the_ID(); ?>
<?php $the_query = new WP_Query( array( 'cat' => $cat, 'posts_per_page' => 1, 'p' => $post_id) );?>
<?php if ( $the_query->have_posts() ) : ?>
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<?php the_title(); ?>
<?php the_content(); ?>
<?php previous_post_link('%link', 'Предыдущая', true); ?>
<?php next_post_link('%link', 'Следующая', true); ?>
<?php endwhile; ?>
<?php wp_reset_postdata(); ?>
<?php else : ?>
<p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>
Вроде работает как надо.
А что мне надо было, у меня есть посты которые, каждый из которых относится к одной из четырёх категорий. Когда открывается страница с полным текстом, у меня должна быть реализована навигация по постам из данной категории. Навигация простая, из кнопок Следующая и Предыдущая, и соответственно страница должна обновляться на полный текст другого поста.
Да. и убрал showposts