作成した最初と最後の投稿(CPT)にリンクする方法が必要です。
例えば、私は最後の投稿にいます、そして、「次へ」をクリックするならば、私は最初に行くべきです。
今、私はこれを持っています
<?php
$next_post = get_next_post();
if ( ! empty( $next_post ) ) : ?>
<div id="nextpost" >
<a href="<?php echo get_permalink( $next_post->ID ); ?>">
<!-- <?php echo get_the_post_thumbnail( $next_post->ID, 'thumbnail' ); ?> -->
</a>
<span class="nav-next">
<?php next_post_link( '%link', __( 'Next project', 'twentyeleven' ) ); ?>
</span>
</div>
<?php endif; ?>
else: go to first post
のようなものが必要です。
私が最初の投稿をしているとき、そして「前へ」をクリックしたとき私は同じことをします。
menu_order
のようにシングルポストでナビゲーションの順序を設定するコードの断片を見つけたので、今度は解決策が異なるかもしれません。
ここで私が話していることのコード
function square_adjacent_post_where($sql) {
if ( !is_main_query() || !is_singular() )
return $sql;
$the_post = get_post( get_the_ID() );
$patterns = array();
$patterns[] = '/post_date/';
$patterns[] = '/\'[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\'/';
$replacements = array();
$replacements[] = 'menu_order';
$replacements[] = $the_post->menu_order;
return preg_replace( $patterns, $replacements, $sql );
}
add_filter( 'get_next_post_where', 'square_adjacent_post_where' );
add_filter( 'get_previous_post_where', 'square_adjacent_post_where' );
function square_adjacent_post_sort($sql) {
if ( !is_main_query() || !is_singular() )
return $sql;
$pattern = '/post_date/';
$replacement = 'menu_order';
return preg_replace( $pattern, $replacement, $sql );
}
add_filter( 'get_next_post_sort', 'square_adjacent_post_sort' );
add_filter( 'get_previous_post_sort', 'square_adjacent_post_sort' );
私達が参照する順序があればFirts/last postは意味があります。 get_next_post()
関数は投稿日を決定に使います。どの投稿が次の投稿です。オプションとして分類法も使用しますが、引数なしでこの関数を使用すると、日付のみが関連するため、最初の投稿は 同じ投稿タイプの最新の投稿 です。
最新の投稿を取得するには、新しい WP_Query
、 get_posts
、または wp_get_recent_posts
を使用できます。
後者を使用した例
<?php
$next_post = get_next_post();
if ( empty( $next_post ) ) {
global $post;
$args = array(
'numberposts' => 1, 'post_type' => $post->post_type, 'post_status' => 'publish'
);
$recent = wp_get_recent_posts( $args, OBJECT );
$next_post = ! empty( $recent ) ? array_shift( $recent ) : FALSE;
}
if ( ! empty( $next_post ) ) :
// your code goes here
endif;