[WordPress]次のページとか前のページとかいうリンク

WordPress個別記事、アーカイブでのページ送り設置でちょいちょい混乱するのでメモしとく。

single

ループ内に記述する。

基本形

<?php previous_post_link( $format, $link, $in_same_term, $excluded_terms, $taxonomy ); ?>
<?php next_post_link( $format, $link, $in_same_term = false, $excluded_terms = '', $taxonomy = 'category' ); ?>

$link
previous_post_link() 初期値: %title – ひとつ前の投稿のタイトル
next_post_link() 初期値: %title – 次の投稿のタイトル

他のパラメータはCodexで!
WordPress Codex テンプレートタグ/previous post link
WordPress Codex テンプレートタグ/next post link

前後の記事の有無で表示を分岐させる実装例

<?php
	$prev_post = get_previous_post();
	$next_post = get_next_post();
	if( isset($prev_post) || isset($next_post) ):
?>
<div class="pager-wrapper">

	<?php if(isset($prev_post)): ?>
  <div class="pager-prev">
    <?php previous_post_link('%link', '<i class="icon"></i>prev', true); ?>
  </div>
  <?php endif; ?>

  <?php if(isset($next_post)): ?>
  <div class="pager-next">
    <?php next_post_link('%link', '<i class="icon"></i>next', true); ?>
  </div>
  <?php endif; ?>

</div>
<?php endif; ?>

archive

ループ外に記述する。

基本形

<?php previous_posts_link( $label ); ?>
<?php next_posts_link( $label, $max_pages ); ?>

$label
previous_posts_link() 初期値: ‘« Previous Page’
next_posts_link() 初期値: ‘Next Page »’

WordPress Codex テンプレートタグ/previous posts link
WordPress Codex テンプレートタグ/next posts link

前後の記事の有無で表示を分岐させる実装例

<?php
	$prev_post = get_previous_posts_link();
	$next_post = get_next_posts_link();
	if( isset($prev_post) || isset($next_post) ):
?>
<div class="pager-wrapper">

	<?php if(isset($prev_post)): ?>
  <div class="pager-prev">
    <?php previous_posts_link('<i class="icon"></i>prev'); ?>
  </div>
  <?php endif; ?>

  <?php if(isset($next_post)): ?>
  <div class="pager-next">
    <?php next_posts_link('<i class="icon"></i>next', 0); ?>
  </div>
  <?php endif; ?>

</div>
<?php endif; ?>

出力されるaタグにclassとか書きたいとき

single

<?php
	$prev_post = get_previous_post();
	$next_post = get_next_post();
?>
<a href="<?php echo get_permalink( $prev_post->ID ); ?>" class="class"><i class="icon"></i>prev</a>
<a href="<?php echo get_permalink( $next_post->ID ); ?>" class="class"><i class="icon"></i>next</a>

get_permalink()以外に何かないんだろうか と思っているのですが

archive

<a href="<?php echo get_previous_posts_page_link(); ?>" class="class"><i class="icon"></i>prev</a>
<a href="<?php echo get_next_posts_page_link(); ?>" class="class"><i class="icon"></i>next</a>

余談

次とか前とかいうけど、それは新しいのか古いのか

ループのorder(表示順)が影響するので場合による。

とはいえ
昇順(ASC):数字が小→大=古いものから新しいものへ
降順(DESC):数字が大→小=新しいものから古いものへ
デフォルトは降順
→なので、デフォルトでは、previous(前)が新しい記事になり、next(次)が古い記事になる

…Codexに書いてあることと逆な気がするんだけど、わたしは何か勘違いしてるんでしょうか…???

コメントする