这是我第一次在这个论坛上提问。我希望我足够具体。我正在尝试替换WP模板的首页帖子部分。当WP主题设置为设置>阅读>您的最新帖子时,我的index.php页面上的代码运行正常(它获取帖子)但WP主题“思想家”设置阅读的方式设置为静态页面和帖子是通过博客模板页面(与index.php文件位于同一位置)获取的,它从单独包含的文件中的循环中获取帖子。我想将它设置为静态,原因有几个。我的问题是“有没有理由为什么下面的代码只能在index.php文件中工作,而不是在与index.php文件位于同一位置的博客模板文件中。我已经检查了正在调用代码中调用的模板部分。似乎没有帖子可以获取(有)。
感谢您的时间,
戴夫
<!-- blog content -->
<div class="container">
<div class="row" id="primary">
<main id="content" class="col-sm-8" role="main">
<?php if ( have_posts() ) : ?>
<?php /* Start the Loop */ ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php
get_template_part( 'template-parts/content', get_post_format() );
?>
<?php endwhile; ?>
<?php the_posts_navigation(); ?>
<?php else : ?>
<?php get_template_part( 'template-parts/content', 'none' ); ?>
<?php endif; ?>
</main><!-- content -->
<!-- sidebar -->
<aside class="col-sm-4">
<?php get_sidebar(); ?>
</aside>
</div><!-- primary -->
</div><!-- container -->
答案 0 :(得分:1)
have_posts()函数只允许您检查页面是否有帖子,因为它是您的静态页面,将不会为此页面分配帖子。
您需要先在页面开头查询才能显示帖子。这是一个例子。
EDITED ::
$args = array(
'post_type' => 'post',
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'movie_genre',
'field' => 'slug',
'terms' => array( 'action', 'comedy' ),
),
array(
'taxonomy' => 'actor',
'field' => 'term_id',
'terms' => array( 103, 115, 206 ),
'operator' => 'NOT IN',
),
),
);
$query = new WP_Query( $args );
if ( $the_query->have_posts() ) : ?>
<!-- pagination here -->
<!-- the loop -->
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<h2><?php the_title(); ?></h2>
<?php endwhile; ?>
<!-- end of the loop -->
<!-- pagination here -->
<?php wp_reset_postdata(); ?>
<?php else : ?>
<p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>
您可以在下面的链接中找到有关WP_Query的更多信息。