web-dev-qa-db-ja.com

奇数/偶数の投稿用に別のHTMLを取得する方法

    query posts
      if posts exist
        then begin the loop
          if post is even: <h1>title</h1><p>content</p>
          if post is odd: <div>its image</div>

これは私が得ようとしているもので、奇数/偶数の投稿では異なる出力です。偶数の投稿ではタイトルとコンテンツを表示し、奇数の投稿では画像(サムネイルなど)を表示します。どうやってこの結果を得るの?

私はこのように投稿を問い合わせます

query_posts('category_name=category-name');

それから私は続ける方法がわからない

4
marco

あなたは投稿を数えるための新しい変数を必要としません、WordPressはすでに$wp_query->current_postにそれを持っています。

<?php while (have_posts()): the_post() ?>
    <?php if ($wp_query->current_post % 2 == 0): ?>
        even
    <?php else: ?>
        odd
    <?php endif ?>
<?php endwhile ?>

あなたがiEmanueleが提案したようにカスタムのWP_Queryインスタンスを使うならば、それは代わりに$query->current_postになるでしょう。

8

query_posts()を使用しないでください。 、代わりに WP_Query classまたは get_posts(); を使用してください。

ループ内の奇数/偶数の投稿をターゲットにするには:

//I will use WP_Query class instance
$args( 'post_type' => 'recipe', 'posts_per_page' => 5 );

//Set up a counter
$counter = 0;

//Preparing the Loop
$query = new WP_Query( $args );

//In while loop counter increments by one $counter++
if( $query->have_posts() ) : while( $query->have_posts() ) : $query->the_post(); $counter++;

    //We are in loop so we can check if counter is odd or even
    if( $counter % 2 == 0 ) : //It's even

        the_title(); //Echo the title of post
        the_content(); //Echo the content of the post

    else: //It's odd

        if( has_post_thumbnail() ) : //If the post has the post thumbnail, show it
            the_post_thumbnail();
        endif;

    endif;

endwhile; wp_reset_postdata(); endif;

それが役に立てば幸い!

4
iEmanuele

投稿の数を数え、それを whileループ の中で増やして、それが奇数か偶数かをチェックするための新しい変数を持つことができます。これは Blaskan theme の作者のアーカイブを表示するloop.phpファイルのサンプルコードです。

<?php // Start the loop ?>
<?php while ( have_posts() ) : the_post(); ?>

<?php if ( ( is_archive() || is_author() ) && ( !is_category() && !is_tag() ) ) : // Archives ?>
    <li>
      <a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'blaskan' ), the_title_attribute( 'echo=0' ) ); ?>"><?php the_title(); ?></a>
      <time datetime="<?php the_date('c'); ?>"><?php print get_the_date(); ?></time>
    </li>
<?php else: // Else ?>

著者のアーカイブの偶数番号の投稿にのみ公開日を表示するように修正されたコード...

<?php $posts_count = 1; // Start the loop ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php ++$posts_count; ?>

<?php if ( ( is_archive() || is_author() ) && ( !is_category() && !is_tag() ) ) : // Archives ?>
    <li>
      <a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'blaskan' ), the_title_attribute( 'echo=0' ) ); ?>"><?php the_title(); ?></a>
      <?php if($posts_count % 2): ?> <time datetime="<?php the_date('c'); ?>"><?php print get_the_date(); ?></time> <?php endif; ?>
    </li>
<?php else: // Else ?>
1
Pothi Kalimuthu