web-dev-qa-db-ja.com

1番目の投稿に対してのみCSSクラスを印刷/エコーし、1番目以降の投稿をすべて無視するロジック

私は、3つの投稿を取得し、最初の投稿をprint/echoするクラスをアクティブにし、残りの投稿はNormalになるような関数を取得しようとしています。

このコードをfunctions.phpで生成しようとしましたが、結果が得られませんでした。

function slider_news() {
        $args = array(
      'numberposts' => 3
    );
            $latest_posts = get_posts($args);   

            foreach ($latest_posts as $post) {
            $num    = 0;
            $newnum = $num + 1; 
            $num    = $newnum;

            if ($num =1) {

                echo 'Post with <div class="active">1st Post </div ';

                $newnum = $num + 1; 

            }


            else{

                echo 'Post with <div class="Normal">All other posts except 1st</div>';

                }
                                            }
                                }       

私はこの関数から得たソースコードは以下の通りです

Post with <div class="active">1st Post </div>
Post with <div class="active">1st Post </div>
Post with <div class="active">1st Post </div>
1
Nimesh

私がコメントで述べたように、これはWordPress開発の質問よりもプログラミング言語の質問であり、そしてそれは第二の質問にも当てはまります。ただし、コメントを追加して間違いを増やす代わりに、答えを書きます。

function slider_news() {

    $num = 0;
    $args = array( 'numberposts' => 3 );

    $latest_posts = get_posts( $args );   

    foreach ( $latest_posts as $post ) {

        $num++; //PHP increment operator ++ (add 1 to value)

        if ( 1 === $num ) { //using a single equals as in original would set the value, === is strict equivalence

            echo 'Post with <div class="active">1st Post</div>';
            //example was missing final ">"

        } else {

            echo 'Post with <div class="Normal">All other posts except 1st</div>';

        }

    }

}

一重引用符と二重引用符を交互に使用しても、上記に問題はありません。一重引用符を使用して文字列を区切ることに一貫している限り、それらの中で二重引用符を使用することはできますが、印刷用の一重引用符をエスケープする必要があります。詳しくは、PHPの構文をお読みになることをお勧めします。特別なWordPressの例外はありません。

3
CK MacLeod