0

投稿サムネイル jquery スライダーをヘッダー部分に追加していますが、奇妙な問題が発生しています。while または stop クエリが何らかの形で終了していないため、単一の投稿またはページに移動すると、ページまたは投稿のコンテンツではなくループが表示され続けます。

私は 2 つの異なるクエリを試しましたが、この奇妙な問題で停止するものはありませんでした。

最初に試した

<?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; ?>

2 番目に試行したよりも

<?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');) は、常にすべての投稿をランダムな順序でプルします。単一の投稿を表示するには、投稿またはページのパラメーターを渡す必要があります。「p」、「page_id」、またはその両方を確認するには、おそらくget_query_var()を使用する必要があります。このようなもの:

  $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 (have_posts()) の前に 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 に答える