0

我正在将帖子缩略图 jquery 滑块添加到标题部分,但这会导致奇怪的问题。它不会以某种方式结束 while 或 stop 查询,因此如果我将转到单个帖子或页面,它会继续显示循环而不是页面或帖子内容。

我尝试了两个不同的查询,但没有一个停止这个奇怪的问题。

第一次尝试

<?php
    query_posts( 'post_status=publish&orderby=rand' );      
    while (have_posts()) : the_post();              

    $title_attr = array(
        'title' => get_the_title(),
        'alt' => get_the_title(),
        'class' => get_the_title(),
    );
    echo '<a href="#post-'.get_the_ID().'" class="scroll theme">';
    the_post_thumbnail('thumbnail',$title_attr);
    echo '</a>';

endwhile; ?>

比第二次尝试

<?php
    $temp = $wp_query;
    $wp_query = null;
    $wp_query = new WP_Query();
    $wp_query->query('post_status=publish&orderby=rand');

    // The Loop
    if ( $wp_query->have_posts() ) : while ( $wp_query->have_posts() ) : $wp_query->the_post();

    $title_attr = array(
        'title' => get_the_title(),
        'alt' => get_the_title(),
        'class' => get_the_title(),
    );
    echo '<a href="#post-'.get_the_ID().'" class="scroll theme">';
    the_post_thumbnail('thumbnail',$title_attr);
    echo '</a>';

endwhile; endif; wp_reset_query();?>

这些都不会停止在单个帖子或页面中显示循环(所有帖子都像索引页面)。

4

2 回答 2

2

我将转到单个帖子或页面,它一直显示循环而不是页面或帖子内容...

那是因为您没有向它传递任何会限制单个帖子查询的参数。您的查询 ( $wp_query->query('post_status=publish&orderby=rand');) 一直以随机顺序拉取所有帖子。对于单个帖子显示,您需要向其传递帖子或页面参数。您可能需要使用get_query_var()来检查“p”、“page_id”或两者。像这样的东西:

  $pid = get_query_var('p');
  if (!empty($pid)) {
    $qry = 'p='.$pid;
  } else { 
    $qry = 'post_status=publish&orderby=rand';
  }
  $wp_query->query($qry);

还有其他可能的解决方案,例如is_single().

此外,WordPress 使用该变量$wp_query,因此您应该真正选择另一个变量,而不是破坏那个变量。

于 2012-10-11T13:52:06.350 回答
0

我找到了解决方案:)

我在 while 之前添加了 if (have_posts()) 并使用 wp_reset_query() 结束循环,现在一切都很好。:)

所以如果有人有同样的问题,这里是最终代码..

<?php
    query_posts( 'post_status=publish&orderby=rand' );      
    if ( have_posts()): while (have_posts()) : the_post();          

    $title_attr = array(
        'title' => get_the_title(),
        'alt' => get_the_title(),
        'class' => get_the_title(),
    );
    echo '<a href="#post-'.get_the_ID().'" class="scroll theme">';
    the_post_thumbnail('thumbnail',$title_attr);
    echo '</a>';

endwhile; endif; wp_reset_query(); ?>
于 2012-10-11T15:03:23.523 回答