Front-page.php加载最近发布的帖子时出现问题

时间:2014-08-20 作者:nerijusgood

嗨,我有一个奇怪的问题,我有我的自定义头版。php带有设置页面(在阅读设置中)静态页面。

我想要的是一个带有欢迎信息的静态页面,以及1篇来自帖子类型的最新帖子和4篇来自自定义帖子类型的最新帖子。

要获取静态页面信息,我使用:

<?php while ( have_posts() ) : the_post(); ?>
  <?php get_template_part( \'content\', \'page\' ); ?>
<?php endwhile; // end of the loop. ?>
然后要获得我最近使用的1篇帖子:

<?php 
   $args = array( \'numberposts\' => \'1\', \'meta_key\'=>\'_thumbnail_id\' );
   $recent_posts = wp_get_recent_posts( $args );
   foreach($recent_posts as $post) : ?>
      <?php get_template_part( \'content\', \'\' ); ?>
<?php endforeach; ?>
最后,要加载4个自定义帖子:

<?php 
   $getPorftolio = new WP_Query( \'post_type=portfolio&posts_per_page=4\' );
   if ($getPorftolio->have_posts()) {
      while ($getPorftolio->have_posts()) {
        $getPorftolio->the_post();

        get_template_part( \'content\', \'portfolio-index\' );
      }
} ?>
当然,还有额外的标记和内容-页面工作得很好(单独工作很好)。

问题是当它加载时,POST类型POST(其中仅加载1)的信息被混淆了。它加载正确的标题、正确的特色图片,但类别、标记、元是空的,摘录来自静态页面。好像它混合了应该加载静态页面信息和帖子信息的位置。最大的错误是,同一个页面在我的本地WAMP上运行得非常好。

测试服务器:http://www.appuilab.com/sandbox/nerijusgood/

EDIT: 我还补充了一句,这根本没有帮助。我还注意到我的标签/类别/帖子元在我的博客(home.php)上也被弄乱了。所以我想问题可能出在模板部分的内容上。php(在这两个地方都加载了这个)。Meta在每个页面中加载相同的函数(在其他页面中,它工作得很好)。

有什么想法吗?我仍然郁闷/

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

您必须重置自定义查询的每个实例,否则您将从此后的任何其他查询中获得意外输出

简单使用wp_reset_postdata() 每次自定义查询之后。

实例

<?php 
   $args = array( \'numberposts\' => \'1\', \'meta_key\'=>\'_thumbnail_id\' );
   $recent_posts = wp_get_recent_posts( $args );
   foreach($recent_posts as $post) : ?>
      <?php get_template_part( \'content\', \'\' ); ?>
<?php endforeach; ?>
<?php wp_reset_postdata(); ?>

//NEXT CUSTOM QUERY

EDIT 1

为什么不使用WP_Query 还有你的wp_get_recent_posts 查询这里是所有代码的一个组合。您只需要确保您的meta\\u密钥是正确的

<?php while ( have_posts() ) : the_post(); ?>
  <?php get_template_part( \'content\', \'page\' ); ?>
<?php endwhile; // end of the loop. ?>

<?php 
$args = array( \'posts_per_page\' => \'1\', \'meta_key\'=>\'_thumbnail_id\' );
$recent_posts = new WP_Query( $args ); ?>

<?php while ( $recent_posts->have_posts() ) : $recent_posts->the_post(); ?>
    <?php get_template_part( \'content\' ); ?>
<?php endwhile; // end of the loop. ?>
<?php wp_reset_postdata(); ?>

<?php 
   $getPorftolio = new WP_Query( \'post_type=portfolio&posts_per_page=4\' );
   if ($getPorftolio->have_posts()) {
      while ($getPorftolio->have_posts()) {
        $getPorftolio->the_post();

        get_template_part( \'content\', \'portfolio-index\' );
      }
} 
wp_reset_postdata();
?>
注意:如果模板称为内容。php,只需将其称为get_template_part( \'content\' );

结束

相关推荐

Featured posts and the loop

我正在尝试在索引中添加一个框。php在何处显示最新的3篇特色帖子。根据this tutorial, 我已将以下内容添加到functions.php:add_theme_support( \'featured-content\', array( \'filter\' => \'magdeleine_get_featured_posts\', \'max_posts\' => 3, ) ); function magdeleine