• 解決済 dokichan

    (@dokichan)


    はじめまして。
    WPを触りはじめたばかりの初心者で低レベルな質問かもしれませんが
    どうぞご教授をお願いいたします。

    現在、カスタムフィールドテンプレートとカスタム投稿タイプのプラグインを導入し、記事を「contents.php」と名を付けたphpに書き出すことに成功しました。
    これを「index.php」に新着記事1件のみを全文表示させたいのです。

    現状、投稿した記事が「index.php」にすべて表示されている状況です。

    おそらく、「contents.php」内の

    <?php if(have_posts()): while(have_posts()):the_post();
    $shop = post_custom('お店情報');
    ?>

    一行目が記事をループさせる指示になっているのではないかと
    いうところまでは分かりました。

    これを解除し、新着記事1件のみを表示させる指示に書きなおしたいのですが…
    いろいろと調べ、試してみましたが画面が真っ白になってしまったりうまくいきません。

    是非、お知恵をお貸しください。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • こんにちわ、dokichanさん。

    <?php
    if ( have_posts() ) {
        while( have_posts() ) {
            the_posts();
           // 記事がある場合の処理
        }
    } else {
        // 記事がない場合の処理
    }

    上記のソースコードは、WordPress で記事を表示する為のループ文です。この形のループ文を WordPress ではメインループとよびます。メインループでは記事の作成順に処理するので、メインループだけを使用すれば、一般的なブログサイトであればメインループだけで作成可能です。
    しかし、メインループでは、特定のポストタイプの特定のカスタム分類に属する記事を◯件表示したいという要望には応えられません。自由な条件で記事を取得した場合は、サブループというループ文を自前で書くか、メインループを改変する必要があります。

    メインループを改変 ( 例えば、検索結果から特定のページ or カテゴリを除外するなど ) する場合は、pre_get_postsフィルターを使います。

    参考サイト: query_postsを捨てよ、pre_get_postsを使おう
    http://notnil-creative.com/blog/archives/1688

    メインループは改変せずに、別のループ ( サブループ ) を使いたい ( 例えば、ブログ新着をメインループで出力、お知らせ ( post_type = info ) 出力したいなど ) という場合は、get_posts() というテンプレート関数を使用します。

    参考サイト: テンプレートタグ/get posts | WordPress Codex 日本語版
    http://goo.gl/XGGgY

    参考サイト: Template Tags/get posts | WordPress Codex 英語語版
    https://codex.wordpress.org/Template_Tags/get_posts

    トピック投稿者 dokichan

    (@dokichan)

    KUCKLUさん、はじめまして。
    早速のお返事ありがとうございました!

    参考サイトとしてお教えいただいたページを見て、
    なんとか思い通りの形にすることができました^^

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

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「カスタム投稿タイプの新着記事1件のみを全文表示させたい」には新たに返信することはできません。