我正在努力获得与WP当前帖子相同类别的下一篇文章。我不是想要获得下一篇文章(next_post_link()
)的链接,而是帖子本身。
目前我只收到同一类别的最新帖子,而不是帖子本身。
$query = new WP_Query( array( 'category_name' => $maincat_slug, 'posts_per_page' => 1, 'post__not_in' => array( $post->ID )) );
if ( $query->have_posts() ) :
while ( $query->have_posts() ) : $query->the_post();
get_template_part( 'template-parts/content', 'teaser' );
endwhile;
endif;
$maincat_slug
包含当前帖子(get_the_category()
)的(第一个)类别slug。
也许我们可以更改'post__not_in'
以包含当前和之前的所有帖子?
编辑:
get_next_post_link
没有类别过滤器,因此我认为这不起作用。
或者我们可以使用offset
在当前帖子之后开始。不知道如何计算循环中当前帖子的索引。
答案 0 :(得分:0)
您可以使用函数url_to_postid()
从链接中检索ID,然后获取帖子:
$link = next_post_link();
$postid = url_to_postid( $link );
$query = new WP_Query( array( 'category_name' => $maincat_slug, 'posts_per_page' => 1, 'p' => $postid );
if ( $query->have_posts() ) :
while ( $query->have_posts() ) : $query->the_post();
get_template_part( 'template-parts/content', 'teaser' );
endwhile;
endif;
答案 1 :(得分:0)
这就是我使用wp_query offset
这样第二个循环会忽略当前帖子之前的所有帖子,并显示当前帖子之后的第一个帖子。
代码:
// Get current category (first cat if multiple are set)
$category = get_the_category();
$maincat_slug = $category[0]->slug;
// Get current Post ID
$current_id = $post->ID;
// Reset offset
$offset = 0;
// Calculate offset
$query = new WP_Query( array( 'category_name' => $maincat_slug ) );
if ( $query->have_posts() ) :
while ( $query->have_posts() ) :
$query->the_post();
$test_id = $post->ID;
if ( $test_id == $current_id ) :
// Set offset to current post
$offset = $query->current_post + 1;
endif;
endwhile;
endif;
// Display next post in category
$query = new WP_Query( array( 'category_name' => $maincat_slug, 'posts_per_page' => 1, 'offset' => $offset) );
if ( $query->have_posts() ) :
while ( $query->have_posts() ) :
$query->the_post();
get_template_part( 'template-parts/content', 'teaser' );
endwhile;
else :
// Fallback
endif;