web-dev-qa-db-ja.com

2つ目のページで2つのループのうち1つが繰り返されないようにするにはどうすればよいですか。

複数のループがあるページがありますが、最初のループが2番目の(または古い)ページで繰り返されます。私はフォーマットを維持したいがポストが繰り返すのを止めたい。

あなたはここで問題を見ることができます: http://violentology.com/blog/

私のindex.phpファイルに、私はコードがあります:

<table width="980" border="0" cellspacing="0" cellpadding="0">
        <tr>
            <td colspan="3" style="background-color:#000">
            <?php get_the_image( array( 'meta_key' => 'feature_img', 'size' => 'full size', 'height' => '450', 'image_class' => 'post-feature-1' ) ); ?></td>
        </tr>
        <tr><td height="10"></td></tr>
        <tr>
    <td valign="top">
    <div id="main-col">
    <?php get_template_part( 'loop', 'index' ); ?>
    </div>
    </td>
    <td valign="top" id="mainsidebartd">
    <div id="linksidebar">
    <?php get_sidebar(); ?>
    </div>
    </td>
    <td width="10px">&nbsp;</td>
        </tr>
    </table>`

私のループでは、コードは次のとおりです。

<!-- First Loop -->
<div id="first_post">
<?php $my_query = new WP_Query('posts_per_page=1');
  while ($my_query->have_posts()) : $my_query->the_post();
  $do_not_duplicate = $post->ID;?>
        <!-- GETTING POST TITLE -->
        <h2><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>

        <!-- GETTING DATE AUTHOR AND COMMENTS -->
        <div class="date"><em><?php the_time('F jS, Y') ?> by <?php the_author_posts_link() ?></em> | <em><?php comments_popup_link( __( 'Leave a comment', 'twentyten' ), __( '1 Comment', 'twentyten' ), __( '% Comments', 'twentyten' ) ); ?></em>
        </div>
        <!-- GETTING ACTUAL POST -->
<?php if ( is_archive() || is_search() ) : // Only display excerpts for archives and search. ?>
        <?php the_excerpt(); ?>
<?php else : ?>
        <?php the_content(); ?>
<?php endif; ?>
  <?php endwhile; ?>
</div>

<!-- Second Loop -->
<?php /* Start the Loop. */ ?>
<?php if (have_posts()) : while ( have_posts() ) : the_post(); 
  if( $post->ID == $do_not_duplicate ) continue; ?>

<div id="singlepost">   <!-- POSITIONS INDIVIDUAL POSTS -->
<div class="post-box"><?php get_the_image( array( 'meta_key' => 'feature_img', 'size' => 'medium', 'height' => '200', 'image_class' => 'post-feature' ) ); ?></div>
        <!-- GETTING POST TITLE -->
            <h2><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>

        <!-- GETTING DATE AUTHOR AND COMMENTS -->
        <div class="date"><em><?php the_time('F jS, Y') ?> by <?php the_author_posts_link() ?></em> | <em><?php comments_popup_link( __( 'Leave a comment', 'twentyten' ), __( '1 Comment', 'twentyten' ), __( '% Comments', 'twentyten' ) ); ?></em>
        </div>
        <!-- GETTING ACTUAL POST -->
<?php if ( is_archive() || is_search() ) : // Only display excerpts for archives and search. ?>
        <?php the_excerpt(); ?>
<?php else : ?>
        <?php the_content('Continue Reading',FALSE,''); ?>
<?php endif; ?>
</div>

<?php endwhile; // End the loop. ?>

<?php endif; ?>

        <div id="postnav" class="postnav">
            <?php next_posts_link('&laquo; Older') ?> | <?php previous_posts_link('Newer &raquo;') ?>

    </div>`
3
Andrew

これが使えます

get_query_var('paged')

ホームページ、1ページ、2ページなどを表示しているかどうかを確認します。それで最初のページの後に表示されないように最初のブロックの周りにこれを置くことができます(私はあなたが望むものだと思います)

if ( isset( get_query_var('paged') ) === false )
{
  //do page 1 stuff here.
}

get_query_var()は、 "paged =?"かどうかを返すだけです。 URLにbitが表示されるため、ホームページには何も返されません。ホームページにnullまたは ""が返されるかどうかはわかりません。確認する必要があります。

1
Steve Claridge