我有一个自定义的帖子类型,并且在CPT中single-cpt.php
文件我想加入两个职位,而不是一个。
这两篇文章将是用户在相关档案中单击的文章,以及按日期顺序排列的下一篇文章(即WordPress的默认文章排序方法)。原因是这些帖子基本上都是小而有用的信息,有两篇帖子可以创建更好的SEO和用户体验。
通常,当我想在一个归档页面上获取一定数量的帖子时,我会使用WP_Query()
和设置\'posts_per_page\' => 2
但开箱即用的方法在single-cpt.php
文件,因为这样的代码会拉入最新的帖子,而不是在存档页面上单击的帖子(然后是下一个最近的帖子)。
我要寻找的是与WP循环一起工作的东西,这样每个帖子看起来都一样,但会拉入两篇帖子(从存档中选择一篇,然后按日期顺序选择下一篇)。
Note: 如果WP\\u Query()无法做到这一点,那么任何其他方法都是非常受欢迎的。
<?php
$newsArticles = new WP_Query(array(
\'posts_per_page\' => 2,
\'post_type\'=> \'news\'
));
while( $newsArticles->have_posts()){
$newsArticles->the_post(); ?>
// HTML content goes here
<?php } ?>
<?php wp_reset_postdata(); ?>
任何帮助都将是惊人的。
最合适的回答,由SO网友:Alan 整理而成
尝试以下操作:
<?php
$current_id = get_the_ID();
$next_post = get_next_post();
$next_id = $next_post->ID;
$cpt = get_post_type();
$cpt_array = array($current_id, $next_id);
$args = array(
\'post_type\' => $cpt,
\'post__in\' => $cpt_array,
\'order_by\' => \'post_date\',
\'order\' => \'ASC\',
);
$the_query = new WP_Query($args);
if($the_query->have_posts()):
while($the_query->have_posts() ): $the_query->the_post();
echo \'<h2>\'.the_title().\'</h2>\';
endwhile;
endif;
wp_reset_postdata();
?>
经过本地测试,似乎效果良好。获取当前帖子ID获取下一个帖子ID获取当前帖子帖子类型运行查询
SO网友:Ben
我没有将其放入模板部分,但我认为这将是一个相当简单的下一步。下面是我要做的:
<!-- The original loop -->
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php the_post_thumbnail( \'medium\' ) ?>
<h3><?php the_title(); ?></h3>
<span class="date"><?php the_date( ); ?></span> <span class="author"><?php the_author_nickname(); ?></span>
<?php the_content(); ?>
<?php endwhile; endif; ?>
<!-- Get Next Post Data -->
<?php $next_post = get_next_post(); ?>
<!-- Format Next Post to mimic the above -->
<img src="<?php get_the_post_thumbnail_url( $next_post->ID, \'medium\' ); ?>">
<h3><?php echo $next_post->post_title; ?></h3>
<span class="date"><?php echo $next_post->post_date; ?></span> <span class="author"><?php echo get_the_author_nickname( $next_post->post_author ); ?></span>
<?php echo get_the_content( $next_post->ID ); ?>
这与页面顶部的原始循环相呼应,当处于循环内部时。然后,循环结束,调用下一个post。下一个post调用的标记与原始post相同,因此您最终会在一个post页面上使用类似的post布局。