我需要一种方法来链接到第一个和最后一个帖子(CPT)创建。
例如,我在上一篇文章中,如果我单击“in”;“下一步”;我应该去第一家。
现在我有了这个
<?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\' );
SO网友:gmazzap
如果我们有订单可以参考,那么第一篇/最后一篇文章是有意义的。get_next_post()
函数使用post date来决定下一篇文章是哪篇文章。它还可以选择使用分类法,但一旦您在没有任何参数的情况下使用该函数,则只有日期是相关的,因此第一篇文章是the most recent post in same post type.
要获取最新的帖子,您可以使用新的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;