サポート » 使い方全般 » 動的に<?php while (have_posts()) : the_post(); ?>使用する

  • 解決済 TOY_TOY

    (@blacksander)


    いつもお世話になっております。

    現在、ブログを構築中なのですが
    投稿されたブログの背景を交互に変えたいという要望がきて
    どう組んだらいいか困っています。
    内容としては下記なのですが

    <!–blogBox1–>
    <div class=”blogBox1 clearfix”>
    投稿内容
    </div>
    <!–/.blogBox1–>

    <!–blogBox2–>
    <div class=”blogBox2 clearfix”>
    投稿内容
    </div>
    <!–/.blogBox2–>
    背景を指定するdivは2種類しかありません。

    <!–newsBox1–>
    <?php while (have_posts()) : the_post(); ?>
    <div class=”blogBox1 clearfix”>
    投稿内容
    </div><!–/.blogBox1–>
    <?php endwhile; ?>

    このやりかただと、もちろんblogBox1の背景しかでません。
    何か良い方法はありましでしょうか?

    1と2を動的に交互にだせれば問題ないのかなと思うのですが
    やりかたが、わからずこまっています…

    長文になり、申し訳ありませんが
    よろしくお願いいたします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • function.php に以下を追加します。

    //奇数
    function isOdd(){
        global $wp_query;
        return ((($wp_query->current_post+1) % 2) === 1);
    }
    
    //偶数
    function isEvery(){
        global $wp_query;
        return ((($wp_query->current_post+1) % 2) === 0);
    }

    そして、コードを

    <?php while (have_posts()) : the_post(); ?>
    <div class="<?php if(isOdd()): ?>blogBox1<?php else: ?>blogBox2<?php endif; ?> clearfix">
    投稿内容
    </div>
    <?php endwhile; ?>

    こんな感じでいけないかな?
    ただ、今環境が2.92しかないので、ちゃんと動くか確認出来ていないのですみません。

    トピック投稿者 TOY_TOY

    (@blacksander)

    threetails様

    ご連絡ありがとうございます。
    私が使用しているのが3.0なのですが
    記事が表示されなくなってしまいました…

    何か別の方法はありますでしょうか?

    それでは、単純な方法で、変数を設定して、その変数を0,1と変更するとかどうかな?

    <?php $numF = 0; ?>
    <?php while (have_posts()) : the_post(); ?>
    <div class="<?php if($numF == 0): ?>blogBox1<?php else: ?>blogBox2<?php endif; ?> clearfix">
    投稿内容
    </div>
    <?php
    if($numF == 0):
     $numF = 1;
    else:
     $numF = 0;
    endif;
    ?>
    <?php endwhile; ?>

    こんな感じで。

    とその前に、もしかして新たにfunction.phpを作られましたでしょうか?
    もしそうでしたら、自分が提示したファイル名が違いました。
    ファイル名「functions.php」と「s」が抜けておりました。

    中身のソースは全てを書きますと

    <?php
    
    //奇数
    function isOdd(){
        global $wp_query;
        return ((($wp_query->current_post+1) % 2) === 1);
    }
    
    //偶数
    function isEvery(){
        global $wp_query;
        return ((($wp_query->current_post+1) % 2) === 0);
    }
    
    ?>

    こんな感じになります。
    WP3.0で動くのも確認しました。

    トピック投稿者 TOY_TOY

    (@blacksander)

    threetails様

    早速のご連絡ありがとうございます!!!
    できました!!

    かなり助かりました^^
    また何かありましたら、フォーラムでご質問させていただきます!!

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「動的に<?php while (have_posts()) : the_post(); ?>使用する」には新たに返信することはできません。