• 解決済 kikuzo

    (@kikuzo)


    いつもお世話になっています。表題について質問させて下さい。

    ワードプレスにてブログを制作しています。
    index.phpがトップで投稿記事を10件表示させています。
    その中の最新記事(時系列順に表示させているので一番上の記事になります)1件だけは投稿した本文を全部表示させ、他9件は抜粋の形にしたいと考えています。

    記事の投稿は下記のように表示させています
    <?php if(have_posts()):while(have_posts()):the_post(); ?>
    <h2>タイトル関係がここにきて</h2>
    <?php the_excerpt(); ?>
    <?php endwhile;endif; ?>

    上記の中で「最新記事」と「その他9件」を分岐させればいい!と考えたのですが・・・ほんとに分からなくて数日間ネット上をぐるぐるさまよってます。どなたかアドバイス等をいただけないでしょうか。
    ワードプレスのバージョンは2.9.2、テーマは自作です。
    お手数をおかけしますが、どうぞよろしくお願いします。

11件の返信を表示中 - 1 - 11件目 (全11件中)
  • トピック投稿者 kikuzo

    (@kikuzo)

    すいません、追加です。
    今のところ「最新の投稿に別スタイルを」の記事を参考に頑張ってます。
    よいアドバイス、他のアイディア等、いただけると嬉しいです。

    ベタですけど。

    <?php
    $first = true;
    if(have_posts()):
      while(have_posts()):
        the_post();
    ?>
    <h2>タイトル関係がここにきて</h2>
    <?php
      if($first){
        $first = false;
        the_content();
      }
      else
        the_excerpt();
      endwhile;
    endif;
    ?>

    トピック投稿者 kikuzo

    (@kikuzo)

    kzさん、お返事ありがとうございます!
    教えていただいた方法でも表題の件、うまく表示されました。
    ただ、個々の投稿記事について装飾用のdivで囲み、さらに投稿日時やコメント数、カテゴリ数を表示させたいと思ってます。
    個々の投稿記事についてこのような感じを目指してます↓
    <div class=”waku”>
    <h2>タイトル関係</h2>
    <p>本文~</p>
    <p>投稿日時 | カテゴリ | コメント数</p>
    </div>

    「最新の投稿に別スタイルを・・・」の方法であれば、<?php $count++; ?>や<?php if($count == 1) : ?>などがバラバラ(?・・・なんと表現していいのか分かりません・・・)なので、divや投稿日時表示タグを必要な位置に入れることができ、うまく表示させることができました。

    教えていただいた方法の場合、divや投稿日時表示タグをどこに&どうやって入れてよいのか分かりませんでした。
    お時間が許すようであれば、アドバイスをいただければ嬉しいです。どうぞよろしくお願いします。

    <?php
      if($first){ // $firstの内容を見て分岐しています。$firstの中身は事前にtrueに設定されているのでtrueになります。
        $first = false; // ここで最初の記事を表示したことを$firstに設定しています。次回上記ifに戻ってきた場合falseになっているので2回目以降にこのコードは実行されません。
        the_content(); // 全文を表示します。詳しくはcodexを確認しましょう。この前後にタグを追記すればdivなどで囲むこともできます。
      }
      else // 2回目以降の実行コードです。上記1回目のループで$firstがfalseになるので2回目以降はこちらが実行されます。
        the_excerpt(); // 抜粋を表示します。詳しくはcodexで。同じくこの前後にタグを追記で装飾できます。
      endwhile;
    endif;
    ?>

    こんな感じでいかがですか?

    トピック投稿者 kikuzo

    (@kikuzo)

    shokun0803さん、さっそくのお返事ありがとうございます!
    早速試してみます!・・・自分のスキルでできるかな・・・(ちょっと不安)

    早速試してみます!・・・自分のスキルでできるかな・・・(ちょっと不安)

    このくらいができるようになるとテーマの改造など一気に楽しくなります;)
    全てを教えてもらうのではなく、トライ&エラーの繰り返しが上達への道です。がんばってください!
    分からなくなったらいつでも質問をどうそ。

    トピック投稿者 kikuzo

    (@kikuzo)

    いつもお世話になっております。失敗です。
    記事1件ごとに枠(div class=”waku”)で囲むとして・・・下記のようにやってました。
    いろんなとこにdivの閉じタグを入れてみました・・・真っ白になって失敗です!「この前後にタグを追記」のあたりにそのままタグを書いてしまったのですが・・・そのまま書いてはだめでしたでしょうか?
    <?php
    $first = true;
    if(have_posts()):
    while(have_posts()):★ループが始まって
    the_post();
    ?>
    <div class=”waku”>★divの始まりがここで
    <h2>タイトル関係がここにきて</h2>
    <?php
    if($first){
    $first = false;
    the_content();★この辺に閉じタグ?
    }
    else
    the_excerpt();★この辺も閉じタグ?
    endwhile;
    endif;
    ?>
    すいません、お時間が許すならヒントをいただけないでしょうか。

    いろんなとこにdivの閉じタグを入れて

    ブロックの始まりと終わりを落ち着いて考えるとどこに何を入れるべきかわかりやすいです。

    <div class="waku">
      <h2>1件目のタイトル</h2>
     <div class="entry firtst">
        1件目の記事の本文
      </div>
    </div>
    <div class="waku">
      <h2>2件目のタイトル</h2>
     <div class="entry">
        2件目の記事の抜粋
      </div>
    </div>
      :

    となってほしいので

    <?php
    $first = true;
    if(have_posts()):
      while(have_posts()):★ループが始まって
        the_post();
        ?><div class="waku">★divの始まりがここで
        <h2><?php the_title(); ?></h2>
        <?php
        if($first){
          $first = false;
            ?><div class="entry first"><?php
          the_content();
            ?></div><?php
        }
        else
          ?><div class="entry"><?php
          the_excerpt();★この辺も閉じタグ?
          ?></div><?php
        endif;
        ?></div><?php
      endwhile;
    endif;
    ?>
    トピック投稿者 kikuzo

    (@kikuzo)

    Kzさん、書き込みありがとうございます!出来ました、出来ました!
    <?php
    }
    else
    ?>
    この部分思いっきり間違ってました、というよりスキルがなくて勘違いしてました。
    ありがとうございます!これで、「最新の投稿に別スタイルを・・・」の方法とあわせて2つの書き方が出来るようになりました~。

    この部分思いっきり間違ってました、というよりスキルがなくて勘違いしてました。

    ちなみに上のコードと同じものを別の書き方で書くと、以下のようになります。ご参考まで。

    <?php
    $first = true;
    if(have_posts()){
    	while(have_posts()){ //★ループが始まって
    		the_post();
    		echo '<div class="waku"><h2>' . get_the_title() . '</h2>';		//★divの始まり
    		if($first){
    			$first = false;
    			echo '<div class="entry first">' . get_the_content() . '</div>';
    		}else{
    			echo '<div class="entry">' . get_the_excerpt() . '</div>'; 	//★この辺も閉じタグ?
    		}
    		echo '</div>';
    	}
    }
    ?>

    「最新の投稿に別スタイルを・・・」の方法とあわせて2つの書き方が出来るようになりました~。

    最新の投稿に別スタイルを・・・」の方法だと、1件目だけでなく、例えば4件目だけ表示を変えたいときにも使えますし、コードを眺めつつ、いろいろ研究してみてください。スマートにしようと思えばできなくもないですが、わかりやすさとの兼ね合いもありますので。

    トピック投稿者 kikuzo

    (@kikuzo)

    kurosquareさん、書き込みありがとうございます。こちらもできました!
    いろんな書き方があるんですね!大変勉強になります。
    どれも難しいですね・・・恥ずかしながら「$」と「echo」がでてくるとすごく難しそうで、なんだかドキドキします。ありがとうございました!

11件の返信を表示中 - 1 - 11件目 (全11件中)
  • トピック「最新の投稿記事1件のみ本文全表示したい」には新たに返信することはできません。