023
個別ページで次の投稿・前の投稿のURLを取得する
Library
previous_post_link() / next_post_link()はリンクを出力するので、URLを文字列として取得することができません。また、URLを文字列として取得できる関数も用意されていませんので、get_previous_post() / get_next_post()を用いて取得します。
| 用例 |
|
|---|---|
| 関連 | |
| Codex |
次の投稿・前の投稿へのURLを文字列として取得する
get_previous_post( $in_same_term, $excluded_terms, $taxonomy )は、現在の投稿の1つ前の投稿そのものを取得してくる関数で、WordPressループの中で使います。うまく取得できると、WP Postオブジェクトが得られるので、そこから記事のIDを取得することができます。
<?php
$prev_post = get_previous_post();
if( !empty( $prev_post ) ) {
$url = get_permalink( $prev_post->ID );
}
?>これで前の投稿のURLを取得することができます。前の投稿が存在しない場合、get_previous_post()は''(空文字)を返しますので、empty()で確認する必要があることに注意してください。
また、get_previous_post()はprevious_post_link()と似たような引数を取りますので、タクソノミーを限定することもできます。詳しくはこのライブラリを参照してください。
次の記事の場合も全く同様です。
<?php
$next_post = get_next_post();
if( !empty( $next_post ) ) {
$url = get_permalink( $next_post->ID );
}
?>前後の投稿のURLを取得する関数を作成する
何度か前後の投稿のURLを取得する機会がある場合は、functions.phpに関数として定義すると便利です。
function twpp_get_adjacent_post_url( $previous = true ) {
$post = get_adjacent_post( false, '', $previous );
$url = '';
if( !empty( $post ) ) {
$url = get_permalink( $post->ID );
}
return $url;
}2行目のget_adjacent_post()は隣接する投稿を取得する関数で、第3引数で前後を指定することができます。PreviousとNextで関数を別々に作ってもよいですが、今回はまとめてみました。以下のようにして使います。
$prev_url = twpp_get_adjacent_post_url( true );
$next_url = twpp_get_adjacent_post_url( false );
Comment