随机POST,POST循环中的页面问题

时间:2012-03-05 作者:Tomas

我想在我的网站的索引页面中显示一个随机页面,这一切都很好。问题是,在发布帖子之前,我想根据帖子发布的类别显示一个页面。这个网站是关于世界各国的,所以在发帖之前我想展示一个国家的描述,一些图片和东西。

问题是,当我加载页面时,将不再显示帖子(2页),因此加载页面后,我必须重置查询。之后,糟糕的事情发生了,显示的不是一篇随机帖子,而是所有帖子。

代码:

<?php global $more; $more = -1; //declare and set $more before The Loop ?>




<?php
query_posts(array(\'orderby\' => \'rand\', \'showposts\' => 1));
if (have_posts()) :
while (have_posts()) : the_post(); ?>









<?php
if(in_category(\'afghanistan\')) {
$recent = new WP_Query("pagename=asia/afganistanas"); while($recent->have_posts()) : $recent->the_post();?>
       <h3><?php the_title(); ?></h3>
       <?php the_content(); ?>
<?php endwhile;
}
elseif(in_category(\'albania\')) {
$recent = new WP_Query("pagename=europe/albania"); while($recent->have_posts()) : $recent->the_post();?>
       <h3><?php the_title(); ?></h3>
       <?php the_content(); ?>
<?php endwhile;
}
else {
echo "Error!";
}
?>
<?php wp_reset_query(); ?>








<div id="loop">

<h1 class="post-title"><?php the_title(); ?></h1>


<?php the_content(); ?>



<?php endwhile;
endif; ?>

2 个回复
最合适的回答,由SO网友:Charles 整理而成

假设您有一个原始查询正在包装粘贴的代码,它如下所示<?php wp_reset_query(); ?> 是你的问题,但我很确定你可以用<?php wp_reset_postdata() ?> 返回到主查询中的原始$post变量。

SO网友:Chris_

查看您的代码,您遇到的问题与您调用的代码点有关:

<?php wp_reset_query(); ?>
这正是按照它所说的做,并将查询“重置”为默认的“获取所有帖子”类型的查询。

要获得想要的效果,您需要执行以下操作:

<?php
$randomID = -1;
query_posts(array(\'orderby\' => \'rand\', \'showposts\' => 1));
if (have_posts()) :
while (have_posts()) : the_post(); ?>
<?php
$randomID = get_the_ID();

if(in_category(\'afghanistan\')) {
$recent = new WP_Query("pagename=asia/afganistanas"); while($recent->have_posts()) : $recent->the_post();?>
       <h3><?php the_title(); ?></h3>
       <?php the_content(); ?>
<?php endwhile;
}
elseif(in_category(\'albania\')) {
$recent = new WP_Query("pagename=europe/albania"); while($recent->have_posts()) : $recent->the_post();?>
       <h3><?php the_title(); ?></h3>
       <?php the_content(); ?>
<?php endwhile;
}
else {
echo "Error!";
}
?>
<?php wp_reset_query(); ?>


<?php endwhile;
endif; ?>


<div id="loop">

<h1 class="post-title"><?php echo get_the_title($randomID); ?></h1>


<?php get_the_content($randomID); ?>
</div>
试试看,这至少会让你接近你想要的东西。如果你想要永久链接,你也需要添加它。我还没有测试出这段代码,所以您需要首先进行验证,但这应该会让您接近。

结束

相关推荐

simply loop through posts

我知道这是一个真正的新手问题,但我似乎无法从帖子中获得循环。它所做的只是从页面本身中提取。我制作了一个模板并添加了循环。<?php if( have_posts() ) { while( have_posts() ) { the_post(); ?> <h2><?php the_title(); ?></h2> <?php } } ?>