我正在创建自定义主题,在single.php
文件中,我有主循环,但是如果我导航到不同的帖子,所有显示的都是最新帖子。我可以去不同的永久链接,但唯一显示的帖子是最新的帖子。如何制作以便显示正确的帖子?
我尝试更改永久链接并删除和添加页面,但我得到了相同的结果。
这是single.php
<?php while(have_posts()): the_post();?>
<section class="main-section">
<header>
<h1 class="section-header"><?php the_category('/');?></h1>
<ul class="section-nav">
<?php
$cat = get_the_category()[0];
$categoryPosts = get_posts(array('category' => $cat->term_id));
foreach($categoryPosts as $post): setup_postdata($post);
?>
<li><a href="<?php the_permalink();?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
</ul>
</header>
<h2 class="section-blurb"><?php the_title();?></h2>
<div class="info">
<?php the_content(); ?>
</div>
</section>
<?php endwhile;?>
一切正常......但仅限于最新帖子。如何制作以显示相应的帖子?
答案 0 :(得分:1)
您可以使用orderby进行排序 &#39;的OrderBy&#39;
$categoryPosts = get_posts(array('category' => $cat->term_id, 'orderby' => 'post_date', 'order' => ASC));
供参考,请参阅此链接
答案 1 :(得分:0)
嗨,这听起来像一个简单的修复。这是一个儿童主题。尝试保存当前的single.php文件并将其替换为新的single.php文件,使用wp主题,以下内容来自wp 2012 single.php标记
<?php
/**
* The Template for displaying all single posts
*
* @package WordPress
* @subpackage Twenty_Twelve
* @since Twenty Twelve 1.0
*/
get_header(); ?>
<div id="primary" class="site-content">
<div id="content" role="main">
<?php while ( have_posts() ) : the_post(); ?>
<?php get_template_part( 'content', get_post_format() ); ?>
<nav class="nav-single">
<h3 class="assistive-text"><?php _e( 'Post navigation', 'twentytwelve' ); ?></h3>
<span class="nav-previous"><?php previous_post_link( '%link', '<span class="meta-nav">' . _x( '←', 'Previous post link', 'twentytwelve' ) . '</span> %title' ); ?></span>
<span class="nav-next"><?php next_post_link( '%link', '%title <span class="meta-nav">' . _x( '→', 'Next post link', 'twentytwelve' ) . '</span>' ); ?></span>
</nav><!-- .nav-single -->
<?php comments_template( '', true ); ?>
<?php endwhile; // end of the loop. ?>
</div><!-- #content -->
</div><!-- #primary -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>