シングルページの前後の投稿へのリンクを変更し、タイトルを表示

BLOGでは、シングルページの最後に、他の記事を読んでもらうため、前後の記事へのリンクを設定しています。今回は、シングルページ前後の投稿へのリンクを変更し、タイトルを表示する方法を紹介します。

コード

PHPの表示したい場所に、下記コードを入力します。

<div class="more-news">
	<?php
		$next_post = get_next_post();
		$prev_post = get_previous_post();
		if ( $next_post ):
	?>
        <div class="prev">
           <a class="another-link" href="<?php echo get_permalink( $next_post->ID ); ?>"><?php next_post_link('%link', ' %title'); ?></a>
        </div>
		<?php
			endif;
			if ( $prev_post ):
		?>
		<div class="next">
            <a class="another-link" href="<?php echo get_permalink( $prev_post->ID ); ?>"><?php previous_post_link('%link', ' %title '); ?> </a>
         </div>			
	<?php endif; ?>		
</div>

CSSでスタイルを整えます。

#pg-blogDetail .more-news {
	display: flex;
	flex-direction: row;
	justify-content: space-between;
	gap: 1em;
	align-items: center;
	text-align: left;
}

#pg-blogDetail .more-news .prev  {
	position: relative;
	flex: 1;
	padding-left: 2em;
}

#pg-blogDetail .more-news .prev .another-link::before {
	content:  '≪';	
	position: absolute;
	left: 0;
	-webkit-transform: translateY(-50%);
	transform: translateY(-50%);
	top: 50%;
}

#pg-blogDetail .more-news .next {
	padding-right: 2em;
	flex: 1;
	position: relative;
}

#pg-blogDetail .more-news .next {
	display: grid;
	justify-content: flex-end;
}

#pg-blogDetail .more-news .next .another-link::after {
	content:  '≫';
	position: absolute;
	right: 0;
	-webkit-transform: translateY(-50%);
	transform: translateY(-50%);
	top: 50%;
}

確認

プレビューを確認します。前後にある場合は、左右に表示されます。最新の投稿は、前の投稿のみ右側に表示されます。最初の投稿は、次の投稿のみ左側に表示されます。

前後にある場合は、左右に表示

最新の投稿は、前の投稿のみ右側に表示

最初の投稿は、次の投稿のみ左側に表示

タイトルが長くなる場合や、SP幅が狭くなり、改行される場合、矢印上下中央に表示されます。また、前後のタイトルの間1文字分のスペースがあります。行数が前後で違う場合でもタイトル矢印上下中央に表示されます。

改行される場合、矢印上下中央に表示

行数が前後で違う場合でもタイトル矢印上下中央に表示

以上で今回の説明は終了です。NEXTPREVのシンプルなものより、タイトルがあると、記事の内容がわかって便利ですね。