• かなり初心者なので、説明が分かりにくい&既出でしたらすみません。

    固定ページ(ID:10)に、
    特定のカテゴリーに投稿された最終日時を表示したいのですが、
    どこへどのように追加していけばいいか分からず困っています。

    具体的な内容としては、1つのサイトに複数名の担当がブログをアップするのですが、
    固定ページに担当毎の名前と自己紹介と最終更新日を表示させようと思っています。

    <ul>
    <li>メンバー名</li>
    <li>自己紹介</li>
    <li>更新日</li>
    </ul>
    <ul>
    <li>担当A(カテゴリーID:100)</li>
    <li>ただ今準備中です。しばらくお待ちください。</li>
    <li>ここに担当Aの最終投稿日を表示したい</li>
    </ul>
    <ul>
    <li>担当B(カテゴリーID:200)</li>
    <li>ただ今準備中です。しばらくお待ちください。</li>
    <li>ここに担当Bの最終投稿日を表示したい</li>
    </ul>

    何か良い方法がございましたらご教授のほどよろしくお願いします。

13件の返信を表示中 - 1 - 13件目 (全13件中)
  • やり方は色々あると思います。
    カテゴリーや担当者の数が多いと不効率ですが、何をやっているのかがわかりやすいコードですと、こんな感じでしょうか。
    ※get_postsのパラメータは、たくさん種類が有りますので適宜変更してください。

    <?php
    $myPosts = get_posts(
                   array('numberposts'=>1,
                         'category'=>'100',
                         'orderby'=>'post_date',
                         'order'=>'DESC',
                         'post_type'=>'post',
                         'post_status'=>'publish'
                        )
                   );
    ?>
    <li>ここに担当Aの最終投稿日<?php echo $myPosts[0]->post_date; ?></li>
    モデレーター Takuro Hishikawa

    (@hissy)

    特定のカテゴリーに投稿された記事を1件取得し、その日付を見ればよいと思います。

    1. テンプレートタグ/get_posts
    2. テンプレートタグ/get_the_time
      トピック投稿者 jkpe2

      (@jkpe2)

      ue様
      hissy様

      返信が遅くなって申し訳ありません。
      本日お二方のアドバイスを参考にし、設定してみます!

      解決方法、不明点などありましたら、改めて追記させていただきます。
      ありがとうございました!

      トピック投稿者 jkpe2

      (@jkpe2)

      ue様の内容を元に固定ページに該当カテゴリーに投稿された
      最新の日時が表示されるようになりましたが、
      できれば(“Y年n月j日”)だけの表記にしたいです。

      hissy様から頂いた内容も参考に色々と調べましたが、
      何をどう試しても時間:分:秒が表示されてしまいます。

      お手数をお掛けしますが、ご教授のほどよろしくお願いします。

      モデレーター Takuro Hishikawa

      (@hissy)

      Codexのget_postsのページのコードの様に、setup_postdataを使ってテンプレートタグを使えば解決します。

      トピック投稿者 jkpe2

      (@jkpe2)

      hissy様

      早速の回答ありがとうございます。
      get_postsを使って新たにコードを作りなおしました。

      <ul class="menu">
      <li>担当A(カテゴリーID:100)</li>
      <li>ただ今準備中です。しばらくお待ちください。</li>
      <?php
      global $post;
      $args = array('numberposts'=>1,'category'=>100 );
      $myposts = get_posts( $args );
      foreach( $myposts as $post ) :	setup_postdata($post); ?>
      <li><?php echo date("Y/m/d") ?></li>
      <?php endforeach; ?>
      </ul>

      このリストには下線が引かれるようにCSSで設定しているのですが、
      該当する投稿がない場合空白となり、下線が表示されなくなりました。

      該当する投稿がない場合は「未投稿です。」と表示させるか、
      空白でも構わないので下線が表示されるようにしたいのですが、
      どのように対応すればいいでしょうか?

      <?php _e('Sorry, no posts matched your criteria.'); ?>

      これが関係あるのかと思い、色々と調べてみたのですが、
      素人が小手先でやろうとしているので、なかなかうまくいきません(涙)

      モデレーター Takuro Hishikawa

      (@hissy)

      まあ、こんな感じですかね

      <?php
      $args = array('numberposts'=>1,'category'=>100 );
      $myposts = get_posts( $args );
      if ( $myposts ) :
      	foreach( $myposts as $post ) : setup_postdata($post); ?>
      	<li><?php echo date("Y/m/d") ?></li>
      <?php endforeach; else: ?>
      	<li>未投稿です。</li>
      <?php endif; ?>
      <?php wp_reset_postdata(); ?>

      そうだ、setup_postdataを使ったら wp_reset_postdata() でリセットするのをお忘れなく…

      トピック投稿者 jkpe2

      (@jkpe2)

      hissy様

      またまたお返事が遅くなってすみません。

      やはり素人が検索だけで作ると、
      全然違うものになってしまいますね^^;

      wp_reset_postdata()の件も、
      教えてもらわなければ調べることもなかったです…

      早速いただいたコードを使ってページを作ったところ、
      思っていたような表示にすることができました!

      ありがとうございました★

      トピック投稿者 jkpe2

      (@jkpe2)

      hissy様

      こんにちは。

      すみません、昨日解決したと書き込みしたのですが…
      さっきページを確認したところ、最新の投稿日が今日になっていました。

      今日は一度も投稿していないのに…;;

      <?php
      $args = array('numberposts'=>1,'category'=>100 );
      $myposts = get_posts( $args );
      if ( $myposts ) :
      	foreach( $myposts as $post ) : setup_postdata($post); ?>
      <li><?php echo date("Y/m/d") ?></li>
      <?php endforeach; else: ?>
      <li>未投稿です。</li>
      <?php endif; ?>
      <?php wp_reset_postdata(); ?>

      頂いた通りのコードだと思うのですが…

      担当毎にカテゴリーネームを変えて同じコードを、
      1ページ内に複数記入しているのですが、それは問題ないでしょうか?

      お手数をお掛けして申し訳ございませんがよろしくお願いします。

      モデレーター Takuro Hishikawa

      (@hissy)

      ごめんなさい間違えてたのに気づきませんでした…。
      最初の方に書いた通りテンプレートタグ「get_the_time」を使ってください。

      <?php
      $args = array('numberposts'=>1,'category'=>100 );
      $myposts = get_posts( $args );
      if ( $myposts ) :
      	foreach( $myposts as $post ) : setup_postdata($post); ?>
      <li><?php echo get_the_time("Y/m/d") ?></li>
      <?php endforeach; else: ?>
      <li>未投稿です。</li>
      <?php endif; ?>
      <?php wp_reset_postdata(); ?>
      トピック投稿者 jkpe2

      (@jkpe2)

      hissy様

      早速のご回答ありがとうございます^^
      でも今度は何故かユーザー登録日になってしまいました…

      Exec-PHPを入れて固定ページに直接書いているのですが、
      入力後に<p>や
      が入ってしまうことが原因でしょうか?
      (更新時には削除している&他のページでは問題ないのですが…)

      一応自分でも検索して「get_the_time」について調べてみたところ、
      「更新時間をPHPの値として返す。」となっていたのですが、
      この「時間」というのは「日付(date)」も含む時間なのか、
      単に「time」を表していることなのでしょうか?

      せっかく丁寧に教えていただいているのに、
      知識がないばっかりにお手間を取らせてすみません><

      モデレーター Takuro Hishikawa

      (@hissy)

      Exec-PHPはサポート外とさせてください。個人的にはあまり推奨しないです。ショートコードにしたほうがいいんじゃないかと。
      get_the_timeは年月日時分秒までデータとして持っていますが、年月日までしかフォーマットに指定しなければそのように出力されます。

      トピック投稿者 jkpe2

      (@jkpe2)

      hissy様

      そうなんですね^^;
      ショートコード…勉強してみます(汗)

      色々と手助けしていただき、ありがとうございました!
      ショートコードで解決できたら、また解決法など更新します★

    13件の返信を表示中 - 1 - 13件目 (全13件中)
    • トピック「固定ページの特定のカテゴリの最終投稿日を表示したい」には新たに返信することはできません。