サポート » 使い方全般 » トップページに最新の投稿の日付とタイトルを表示する方法について

  • 解決済 manfuroi

    (@manfuroi)


    教えていただきたいことがあります。
    現在、トップページに最新投稿記事の日付とタイトルを表示したいなと考え、あるサイトを参考に次のようにindex.phpに記述をしてみました。

    <h3 class="post_title">新着情報</h3> <dl class="feed"> <?php $posts = get_posts('numberposts=5&order=desc'); foreach($posts as $post): ?> <dt> <span class="day"> <?php echo date("Y年m月d日", strtotime($post->post_date)); ?> </span></dt> <dd> <a>" id="post-<?php the_ID(); ?>"> <?php the_title(); ?> </a> </dd> <?php endforeach; ?> </dl>

    このように記述したら、表示はされたのですが、困った点が2つ出てきました。
    まず1つめは、日付とタイトルが2段表示になってしまうことです。自分としては、
    <日付>
    <タイトル>
    <日付> 
    <タイトル>
    ではなく、

    <日付> <タイトル>
    <日付> <タイトル>
    みたいに表示したかったわけです。変更の方法をアドバイスいただけたらありがたいです。

    2つめは、上記の記述だとタイトルをクリックしたらその記事のみの内容を表示するようになっているわけですが、自分としては記事のタイトルをクリックしたらその記事の属するカテゴリページにジャンプするようにしたいと思っていますが、どう直せばいいのかわかりません。phpに関して初心者なので、上記の記述をどのように直せばいいのかの記述例もつけていただけると大変ありがたいです。よろしければ、アドバイスいただきたいです。

11件の返信を表示中 - 1 - 11件目 (全11件中)
  • まず、表示の話ですが、CSSを書けば良いだけです。

    <dl class="feed">
    <dt>日付</dt>
    <dd>タイトル</dd>
    </dl>

    HTMLとしてはこうなっているので、

    <日付>
    <タイトル>

    きっとこうなるのでしょう。
    現在のCSSでどうなっているのかはこちらには分かりません。

    縦の<dt><dd>を横並びにする方法を探してみてください。

    タイトルをクリックしたら、該当カテゴリーページにジャンプ、については、

    <h3 class="post_title">新着情報</h3>
      <dl class="feed">
        <?php query_posts('posts_per_page=5'); ?>
        <?php while (have_posts()) : the_post(); ?>
          <dt>
            <span class="day">
              <?php the_time('Y年n月j日'); ?>
            </span>
          </dt>
          <dd>
            <a href="カテゴリーページのURL">
              <?php the_title(); ?>
            </a>
          </dd>
        <?php endwhile; ?>
      </dl>

    記事の属するカテゴリページのURLがどんなかは知りませんけれど、
    http://example.com/category/hoge/

    hoge ってカテゴリーなら、こんな感じだと思います。
    それなら、

    <?php
    $cat = get_the_category(); $cat = $cat[0]; echo '<a href="' . get_bloginfo('url') . '/category/' . $cat->category_nicename . '">';
    echo $cat->cat_name;
    echo  '</a>';
    ?>

    トピック投稿者 manfuroi

    (@manfuroi)

    返信ありがとうございます。

    1つめは、理解できました。やってみます、ありがとうございます。

    ちょっとよく理解できないのが、2つめの点で、

    <h3 class="post_title">新着情報</h3>
      <dl class="feed">
        <?php query_posts('posts_per_page=5'); ?>
        <?php while (have_posts()) : the_post(); ?>
          <dt>
            <span class="day">
              <?php the_time('Y年n月j日'); ?>
            </span>
          </dt>
          <dd>
            <a href="カテゴリーページのURL">
              <?php the_title(); ?>
            </a>
          </dd>
        <?php endwhile; ?>
      </dl>

    に書き換えればいいというのは、何となく理解できたのですが、

    <?php
    $cat = get_the_category(); $cat = $cat[0]; echo '<a>category_nicename . '">';
    echo $cat->cat_name;
    echo  '</a>';
    ?>

    をどの部分に書けばいいのかというのがよくわかりません。
    初心者で本当に申し訳ないのですが、教えてください。

    記事のカテゴリー名を取得して、リンクを作成し、
    そのリンクをタイトル表示につなげます。

    <?php
    $title = get_the_title( ); //タイトル取得
    $cat = get_the_category();//カテゴリー取得
    $cat = $cat[0];
    //リンク作成
    echo '<a href="' . get_bloginfo('url') . '/category/' . $cat->category_nicename . '">';
    echo $title;
    echo  '</a>';
    ?>

    こうやったらどうなるか試してください。
    カテゴリーページのURLは、パーマリンク設定に依るので、
    manfuroiさんのサイトのカテゴリーページのURLを確かめてください。

    phpが分からなくても、wordpress初心者でも何でも構わないのです。

    初心者だから申し訳ない、というのは間違いだと思いますよ。
    初心者だから何も分からなくても仕方ないですし、
    最初はみんな初心者です。

    ただ、やりたいことがあるわけですから、
    ・カテゴリーページへのリンクをどうやったら作ることが出来るか?
    ・今は個別記事へのリンクになっているが、それはどうやって作られているのか?
    ・それを変更するには、該当記事のカテゴリー名を取得しないといけないのではないか?
    といった、そのための手段を出来るだけ考えてみないといけません。

    どうやって書けばいいのか、どこに書けばいいのか、
    これからも、それを全て質問するわけにもいかないわけですから、
    考えた末に、
    ・どうやってカテゴリー名を取得してリンク作成するのか分からない
    とか、そういう質問を出来た方が良いと思われませんか?

    トピック投稿者 manfuroi

    (@manfuroi)

    たくさんのアドバイスとお返事ありがとうございます。
    要するに、

    <h3 class="post_title">新着情報</h3>
      <dl class="feed">
        <?php query_posts('posts_per_page=5'); ?>
        <?php while (have_posts()) : the_post(); ?>
          <dt>
            <span class="day">
              <?php the_time('Y年n月j日'); ?>
            </span>
          </dt>
          <dd>
    <?php
    $cat = get_the_category(); $cat = $cat[0]; echo '<a>category_nicename . '">';
    echo $cat->cat_name;
    echo  '</a>';
    ?>
          </dd>
        <?php endwhile; ?>
      </dl>

    という形で書けばいいということでしょうか?
    そして上記の get_bloginfo(‘url’)部分のurl部分をカテゴリページのurlにしてということですか?

    ひとつ質問なのですが、自分はカテゴリを5つ使っており、それらのカテゴリに投稿記事をそれぞれ書き込めるようにしております。部署ごとにカテゴリに分ける会社仕様に作っております。そのカテゴリページ全てのurlを調べたほうがいいということでしょうか?
    よろしくお願い致します。

    すみません、自分が書いたコードは試してもらえましたか??

    試してどうなるか確認しましたか?
    自分でこうかな?と思うコードは試したものなんですか?

    <dd>
    <?php
    $cat = get_the_category(); $cat = $cat[0]; echo 'category_nicename . '">';
    echo $cat->cat_name;
    echo '';
    ?>
    </dd>

    これだと、カテゴリー”>カテゴリー とかになりませんかね。

    get_bloginfo(‘url’) は自サイトのurlを出力する呪文です。
    bloginfo() で調べてもらえればすぐ分かります。

    WordPressにはパーマリンク設定というものがあります。

    いろんなサイトに設定がそれぞれあるわけですね。
    AってカテゴリーのURLを、管理者が都合に応じて、

    1. http://example.com/category/A/
    2. http://example.com/A/
    3. http://example.com/?cat=A

    色々と設定が出来るわけです。

    その設定に応じて、リンクのURLを変更しないといけませんよねって話です。
    カテゴリーが何個あるとか、部署ごとに使い分けるかどうかは無関係です。

    モデレーター gatespace

    (@gatespace)

    横からスイマセン。
    get_category_link を使えば、パーマリンク設定に依存しないカテゴリーアーカイブへリンクが取得できますよ。
    CodexではカテゴリーIDを引数としていますが、オブジェクトを渡すことも可能です。

    $cat = get_the_category();
    $cat = $cat[0];
    echo '<a href="'.get_category_link($cat).'">' . esc_html($cat->name) . '</a>';

    ※HTMLやPHPのコードを投稿するときは、コード部分を「code」ボタンを押して 逆クォートで囲ってください。

    gatespaceさま

    そういえば・・・! ありがとうございます。

    トピック投稿者 manfuroi

    (@manfuroi)

    szさん、gatespaceさんご返信ありがとうございます。

    szさん、

    <?php
    $title = get_the_title( ); //タイトル取得
    $cat = get_the_category();//カテゴリー取得
    $cat = $cat[0];
    //リンク作成
    echo '<a href="' . get_bloginfo('url') . '/category/' . $cat->category_nicename . '">';
    echo $title;
    echo  '</a>';
    ?>

    を試してみたのですが、記事タイトルはしっかりあらわれてくれるのですが、クリックしても記事本文へジャンプができません。また、カテゴリページのurlを調べて、その次にどうすればいいのかがわかりません。そこを教えていただけたらと思います。

    gatespaceさん、
    コードを試してみたら、かなりいい感じにはなりましたが、表示が記事タイトルではなくカテゴリの名前が表示されるようになってしまいました。自分としては、記事タイトルをトップページに表示したいと考えていたので、どのように書き換えればいいか教えてください。カテゴリページへのジャンプは見事に成功しました。

    モデレーター gatespace

    (@gatespace)

    ご自分で試したというコードと、私の提示したコードを見比べて、
    成功している部分を組み合わせれば良いんじゃないですかね?

    トピック投稿者 manfuroi

    (@manfuroi)

    ご返信ありがとうございます。
    たぶん
    echo '<a href="'.get_category_link($cat).'">' . esc_html($cat->name) . '</a>';

    を書き換えればいけるのではと思ったのですが、思いつくことをやってはみたのですが、どうしても投稿記事のタイトルに変化しません。よろしければ教えていただけたらと思います。大変申し訳ありません。あと一歩な気がするのですが・・・

    トピック投稿者 manfuroi

    (@manfuroi)

    szさん、gatespaceさん、できました!

    こんなことですが、自分にとってはすごく嬉しいです。わかりやすく説明していただき本当にありがとうございました。また一つ進歩できた気がします。お忙しい中ありがとうございました。

11件の返信を表示中 - 1 - 11件目 (全11件中)
  • トピック「トップページに最新の投稿の日付とタイトルを表示する方法について」には新たに返信することはできません。