嗨,我有一个奇怪的问题,我有我的自定义头版。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在每个页面中加载相同的函数(在其他页面中,它工作得很好)。
有什么想法吗?我仍然郁闷/
最合适的回答,由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\' );