web-dev-qa-db-ja.com

静的なフロントページの抜粋

新しいサイトに取り組んで、私は最近の投稿抜粋を静的フロントページに植えようとしています。私はすべての静的コンテンツを(静的ファイルとして)wordpressの外部で行っていましたが、いわば、すべてをWPフォールドに引き込むことを確信していました。

私のホームページとして機能していた私の外部の静的ファイルで、私はブログのヘッダ<?php require('../wordpress/wp-blog-header.php'); ?>をインクルードする方法を考え出して、そしてそのページでポストを呼び出すこと、そしてそれは魅力のように働いた:

<?php 
                        $count = 0; 
                    ?>
                    <?php if ( have_posts() ) while ( have_posts() && $count <= 6 ) : the_post(); ?>
                            <section class="post">
                                <header class="post">
                                    <h2><a class="light" href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
                                        <?php twentyten_posted_on(); ?>
                                    <div class="hr"></div>
                                </header>
                                <article class="post">
                                    <?php the_excerpt(); ?>
                                </article>
                                <footer class="post">
                                    <?php twentyten_posted_in(); ?>
                                </footer>
                            </section>
                    <?php $count++; ?>
                    <?php endwhile; // end of the loop. ?>

だから、今、 Ihavewordpressのフロントページテンプレートを設定し、myを使って動的に配信しています。テーマヘッダとこの同じループのまとまり、 posts ではなく pages back。現在の投稿を見る代わりに、現在自分のサイトにある3つのwpページのタイトル情報をいくつか取り戻します。これはURLクエリ変数によるものだと思いますが、それを回避する方法が明確ではありません。

手動でnew WP-Query();を呼び出そうとしましたが、何も返されませんでした。 Tho適切な引数が与えられれば、うまくいくかもしれませんが….

この修正されたループを使用して、ページのリストではなく、最近の投稿を静的フロントページに取り込む方法についてご意見をお聞かせください。

とても有難い -

1
Bosworth99

ああ - それを手に入れました - 新しいWP_Queryでほとんどそこにありました、しかし、それの上でqueryメソッドを呼び出すのに失敗していました...これは完全に働きます:

<?php 
                            $excerptQuery = new WP_Query();
                            $excerptQuery->query('showposts=6');
                        ?>
                        <?php if ( $excerptQuery->have_posts() ) while ( $excerptQuery->have_posts()) : $excerptQuery->the_post(); ?>
                                <section class="post">
                                    <header class="post">
                                        <h2><a class="light" href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
                                            <?php twentyten_posted_on(); ?>
                                        <div class="hr"></div>
                                    </header>
                                    <article class="post">
                                        <?php the_excerpt(); ?>
                                    </article>
                                    <footer class="post">
                                        <?php twentyten_posted_in(); ?>
                                    </footer>
                                </section>
                        <?php endwhile; // end of the loop. ?>
1
Bosworth99

front-page.phpテンプレートファイルを使用しない特別な理由はありますか。また、WordPressのヘッダーを外部ファイルに取り込もうとしないでください。

front-page.phpテンプレートファイルを使うのは簡単です:

  1. 任意の名前で新しい静的ページを作成します(「フロントページ」と呼びましょう)。
  2. Dashboard -> Settings -> Readingに行き、「Front Page Displays」を「Static Page」に設定します。
  3. 「フロントページ」ドロップダウンを手順1で作成した「フロントページ」静的ページに設定します。
  4. front-page.phpという名前で、テーマ用の新しいテンプレートファイルを作成し、その中にカスタムループコードを含めます。

また、ループへの呼び出しでfront-page.php条件を使用するのではなく、&& $count <= 6の出力としてメインのループクエリを正しくフィルタ処理する必要があります。

私はget_posts()への単純な呼び出しを使用し、numberposts引数を6に設定することをお勧めします。

2
Chip Bennett