ページでループを使用する必要がありますか?


8

最初のWordPressテーマを書いていますが、ページテンプレートでのループの使用について質問があります。私が調べたページテンプレートはすべて基本的に同じパターンに従っています(Twenty Twelveの例):

<?php while ( have_posts() ) : the_post(); ?>
<?php get_template_part( 'content', 'page' ); ?>
<?php comments_template( '', true ); ?>
<?php endwhile; // end of the loop. ?>

ただし、ページには1つの投稿のみが関連付けられているため、投稿を繰り返し処理する必要はありません。私のページテンプレートはより読みやすく、正常に動作しているようです。

<?php
the_post();
the_title('<h1>', '</h1>');
the_content();
?>

これは良い習慣ですか?欠点はありますか?

回答:


5

テーマガイドによると、単一のテンプレートでも完全なループを使用する必要があります。

すべてのテンプレートで完全なループを使用する必要があります。またはのthe_post()ようなテンプレートを呼び出すだけでは不十分です。single.phppage.php

つまり、完全なループを使用することがベストプラクティスです。


9

私が目にする唯一の潜在的な(編集:機能)問題は、最後のの後でloop_end呼び出さないとアクションが呼び出されないため、そのアクションにフックされたものは実行されないということです。have_posts()the_post()

実際、私は別注のクライアントテーマでそのようにしてきましたが、問題に遭遇したことはありませんが、使用するプラグインや、それらがにフックするかどうかによって異なりますloop_end


テーマガイドによると、単一のテンプレートでも完全なループを使用する必要があります。「すべてのテンプレートで完全なループを使用する必要があります。single.phpやpage.phpのようなテンプレートでthe_post()を呼び出すだけでは不十分です。」つまり、完全なループを使用することがベストプラクティスです。
デイブRomsey 2013

あなたはおそらくそれを答えとして追加する必要があります。テーマをWP.comまたはorgで受け入れて配布したい場合に必要です。
ミロ

よし、ありがとう。します。私はあなたがあなたの答えでそれをカバーしたと思ったので、私はその一口でそれを補足するだけだと思いました。私はあなたが育てたloop_endアクションポイントについて考えたことはありませんでした。よろしくお願いします。
デイブRomsey 2013

良い質問です。ドキュメンタリーに従っているので、ループはすべてのテンプレートファイルで必須ですが、どちらの答えも理由を説明できないと思います。具体的には、このファイルは投稿をまったく表示しないことになっているため、page.php内でthe_post()を実行する必要があるのはなぜですか。
GyRo 2018年

1
@GyRoページは投稿の一種です。テンプレートタグが正しく機能するために必要なデータを設定するために必要です。
ミロ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.