サポート » 使い方全般 » get_postsを使ってカテゴリー別の新着一覧を出力する方法

  • 解決済 hirokichi

    (@hirokichi)


    get_postsを使ってカテゴリー別の新着一覧を表示したいのですが以下のコードだと表示されません。どうかアドバイスお願いします。
    尚、初心者なのでどの部分のスラッグ名を入れて良いのすら分からない状態です。

    <dl>
        <?php foreach($categories as $category) : ?>
            <dt><?php echo $category->cat_name; ?></dt>
            <dd>
                <ul>
                <?php
                    $catposts = get_posts(array(
                        'category_name' => $category->category_nicename,
                        'posts_per_page' => 5 //取得する記事件数
                    ));
                    foreach($catposts as $post):
                    setup_postdata($post);
                ?>
                    <li>
                        <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
                    </li>
                <?php endforeach; wp_reset_postdata(); ?>
                </ul>
            </dd>
        <?php endforeach; ?>
    </dl>
9件の返信を表示中 - 1 - 9件目 (全9件中)
  • 下記のページを参考にどうぞ。フォーラム世話役のgatespaceさんのブログ記事です。
    WordPressでカテゴリ(タクソノミー)毎に投稿を表示

    スレッド開始 hirokichi

    (@hirokichi)

    gblsmさん>どうもありがとございます。
    早速教えて頂いたページを参考に勉強してみます。

    スレッド開始 hirokichi

    (@hirokichi)

    gblsmさん>紹介して頂いたページで少し分からない事がありますがよろしければアドバイスお願いします。
    1つ目の疑問は

    echo "<ul>n";

    とありますがこのnの代わりに普通何を入れるのでしょうか?
    例えば「新着」とか入れるのでしょうか?
    このままだと

    <div id="cat-○○">
    <ul>n
    <li>と言う表示になりnが邪魔になります。

    2つ目は分からないので教えてください。
    そのままのコードだと全カテゴリが表示されるような気がします。
    (まだカテゴリ数も少ないので確実ではないですが)
    そこで自分が表示させたいカテゴリを選んで表示させたいのですが
    何をどうやれば良いのか分からない状態です。
    よろしければ初心者の僕にでもわかるようなアドバイスお願い致します。

    1つ目の疑問は

    echo "<ul>n";

    とありますがこのnの代わりに普通何を入れるのでしょうか?

    たぶん n はタイプミスだと思います。n を削除して構いません。

    そのままのコードだと全カテゴリが表示されるような気がします。

    そうなります。なぜそうなるかは関数 get_categories を説明しているブログ記事を検索して読んでみるとよいですよ。(詳細な説明は このページ にありますが、後から読むのがよいと思います)。

    そこで自分が表示させたいカテゴリを選んで表示させたいのですが

    カテゴリーを「カテゴリーID」で選ぶ方法なら get_categories を省略できます。下記の、別の参考ページをどうぞ。
    WordPressに特定カテゴリーの記事一覧を表示する

    スレッド開始 hirokichi

    (@hirokichi)

    gblsmさん>
    n は削除します。

    今から早速教えて頂いたページを参考に勉強してみます。
    ほんとうにありがとございます。

    スレッド開始 hirokichi

    (@hirokichi)

    gblsmさん>
    あれからいろいろマネしながらやってたら一応「get_posts」を使ってカテゴリ別を表示させるところまで辿りつきました。
    僕の最終目的であるカテゴリ別表示なのですが
    なかなか言葉では上手く言えないかもしれませんが書かせて頂きます。
    よくビジネスサイト及びニュースサイトで見かける表示なのですが
    左側に1つ、右側に3つから5つとカテゴリの記事があります。
    (特に左には大き目の画像付きです)
    そのようにやるには例えば以下のコードを2つ必要となるのでしょうか?
    (右側にはカテゴリの2番目からの記事になるので書き換えが必要になると思います)

    <div>
    <?php
    global $post;
    $tmp_post = $post;
    $category_ids = array( '1' ); //カテゴリーID
    $numberposts = '1'; //一覧表示したい記事数
    foreach ( $category_ids as $category_id ) {
    ?>
    <h2><?php echo get_cat_name( $category_id ); ?></h2>
    <ul class="update">
      <?php
         $postslist = get_posts( "category=$category_id&numberposts=$numberposts&order=DESC&orderby=date" );
         foreach ( $postslist as $post ) {
    ?>
      <li><?php the_time('m月d日'); ?>&nbsp;<a href=<?php echo get_permalink( $post->ID ); ?>><?php echo $post->post_title; ?></a></li>
      <?php
         }
    ?>
    </ul>
    <?php
     }
     $post = $tmp_post;
     ?>
    </div>

    それとも1つにまとめて書くことも出来るのでしょうか?
    もし1つにまとめて出来るのであればまたまたアドバイスお願いします。
    分かりずらいかも知れませんがよろしくお願いします。

    余談ではありますが有料のテーマを購入しようかと考えていましたが
    有料のテーマは管理画面のウィゼットからの操作だったので初心者ではカスタマイズのハードルが高そうなので今回はヤメました。

    hirokichiさん、最初の疑問は解決しましたよね。その場合、このトピックを「解決済み」に変更してください。そして、続きの疑問は新しくトピックを開始して書き込んでください。ご協力よろしくお願いします。

    スレッド開始 hirokichi

    (@hirokichi)

    gblsmさん>どうもご迷惑おかけ致しました。
    ほんとうにありがとございました。

    スレッド開始 hirokichi

    (@hirokichi)

    gblsmさん>どうもご迷惑おかけ致しました。
    ほんとうにありがとございました。

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • トピック「get_postsを使ってカテゴリー別の新着一覧を出力する方法」には新たに返信することはできません。