フロントページ以外の静的ページで投稿のリストを取得するにはどうすればよいですか?
-
16-10-2019 - |
質問
したがって、WPをCMSとして使用している数千人の場合、典型的なアプローチは、設定> [管理者]ページの読み取りページの「静的ページ」オプションを使用することです。
ただし、私は別のシナリオにあります:私たちのフロントページは静的コンテンツを表示しています(home.php テンプレートはそれを駆動します)、そして私たちは二次静的ページを持っています(呼ばれます ニュース)最新の投稿のリストを表示する必要があります(平均的なブログのフロントページに通常見つけられるもの)。
カスタムテンプレートを使用するようにニュースページを設定しました(page-newsindex.php); Twentytenのarchive.phpテンプレートに基づいて、このファイルはヘッダーを表示し、rewind_posts()を呼び出してからget_template_part( 'loop'、 'newsindex')を呼び出して、loop.php(またはloop-newsindex.php、存在する)。桃色。
loop.php 典型的なループ構造を持っています(再び、Twentytenのloop.phpテンプレートに基づいて - 3つのタイプのループは必要ないため、単純化するように微調整しました):
<?php while ( have_posts() ) : the_post(); ?>
ただし、ページにアクセスすると、このループは現在のURLを使用して、ニュースページがカテゴリを定義しているかのように表示する投稿を決定しているようです。典型的なブログのフロントページに到達したときにWPが通常実行するquery_postsをシミュレートするために使用する適切なquery_postsは何ですか?
解決
ブログに投稿を取得する方法は、以下を使用することです。
<?php $recentPosts = new WP_Query(); $recentPosts->query('showposts=5&cat=CAT_ID_GOES_HERE'); while($recentPosts->have_posts()): $recentPosts->the_post(); ?>
次に、各投稿の表示を制御するためにコードを作成します。だから本当に簡単な例については:
<h1 class="title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>
その後、投稿の最後に、あなたはあなたのwhileループを終わらせる必要があります:
<?php endwhile; ?>
他のヒント
確かに - あなたは使用していません Reading
ここに設定されていますか?通常のホームページと通常の静的ページ?
- 君の
News
ページは静的なページであるため、そのループ(URLから作成されたネイティブWPループ)はそれを反映するはずです(したがって、カテゴリのように見えない)。 query_posts()
このようなネイティブループを調整するための関数です。静的ページを強制的に変更しようとしているので、ここで使用してはいけません。- カスタムを使用できます
WP_Query
またget_posts()
静的ページにいくつかの投稿を表示するには、Paginationが機能することができない可能性があります。
全体的に私はあなたがここで車輪を再発明しているように感じます。 Settings > Reading
完璧なマッチのようです。
Front page
静的コンテンツとfront-page.php
テンプレート。Posts page
最新の投稿にデフォルトループを自動的に使用するか、でカスタマイズできますhome.php
テンプレート。
これはあなたが得ようとしているものとまったく同じように思えます、いや?
PS 20ten loop.php
私を怖がらせます。最大の条件付き柔軟性のために、使いやすさと常識が犠牲になったようです。
それがまさにあなたが必要なものであるかどうかはわかりませんが、私の回避策を見てみたいと思います。これは、投稿の最初の画像のサムネイルを使用して、必要な場所に投稿のリストを表示する関数です。
http://wpworks.wordpress.com/2011/02/01/display-wordpress-post-list-with-custom-size-thumbnails/
お役に立てば幸いです。
よろしくお願いします、
アルバロ