WordPress ループ: WordPress ループとは何か、そしてそれについて知っておくべきこと

公開: 2023-10-25

あなたが WordPress テーマ開発者、プログラマー、または WordPress ループとは何かを知りたいと思っている単なる愛好家であれば、この記事はあなたのためです。 早速、基本的なことから始めましょう: ループとは何ですか?

WordPress ループは、簡単に言えば、WordPress の投稿を表示する PHP コードです。 これは、特定の Web ページ上の投稿を表示するためにさまざまなテーマで使用されます。 表示されているほとんどのページで実行できるだけでなく、好みに合わせて変更したりカスタマイズしたりすることもできます。

これらの Web サイト ループは、コメント数ごとに投稿をリストしたり、画像付きの投稿を表示したりするために使用できます。

ループを見ると、投稿を表示するためにいくつかの関数がデフォルトで実行されていることがわかります。 テーマ開発者は、これらの関数とテンプレート タグを使用して、ループ内の各投稿の表示方法をカスタマイズできます。

これらのテンプレート タグは WordPress のデフォルト ループ内でのみ機能し、投稿データの書式設定、配置、公開に使用されます。

WordPress ループは間違いなく WordPress コードの最も重要な部分です。Web サイトがどのようにループするかを詳しく見てみましょう。

初心者のためのWordPressページループ

すでに述べたように、投稿ループは WordPress が投稿に関して持つすべての情報を出力するコードです。 これは各投稿を通じてバックグラウンドで実行され、データベースを 1 つずつ検索して、見つかったすべての投稿に関する情報を提供できるようにします。

以下は、WordPress が投稿をループする仕組みの例です。

  1. ループを開始すると、
  2. 見つかった投稿またはページごとにアクションを実行します。
  3. ループを閉じます。

これら 3 つのステップは、ループの背後にある基本ロジックを表しています。 この時点から、クエリを使用して創造力を発揮し、見つかった投稿をフィルタリングすることができます。 クエリはループに何を探しているかを伝えます。 この例では、次のようになります。

  1. 私たちが探しているものを定義し、
  2. ループを開始し、
  3. 見つかった投稿またはページごとにアクションを実行します。
  4. ループを閉じます。

PHP コードの使用経験がある場合は、データベースの行をすべて手動で入力することなく、データベース クエリを実行し、情報を動的に表示するループで使用される「while」関数に精通しているかもしれません。

WordPress の while ループも同じように機能します。

標準的な WordPress ループの例

以下は、どのページでも使用できる標準的な WordPress ループの例です。

<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post() ?>
// Post display here
<?php endwhile ?>
<?php else : ?>
// Content if there are no posts to show
<?php endif ?>

have_posts()関数とthe_post()関数を見てみましょう。 1 つ目は表示する投稿があるかどうかを判断し、2 つ目はhave_posts()関数を支援するデータと内部ポイントを設定します。

表示するものが何もない場合、関数はユーザーに通知するメッセージを表示する必要があります。

探している投稿がある場合、ループはそれらを 1 つずつ表示します。

ここに、実際に投稿を表示するコード ブロックを用意します。それは私たちの責任です。

<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post() ?>
<div <?php post_class() ?>>
<h2><a href='<?php the_permalink() ?>'><?php the_title() ?></a></h2>
<div class='post-excerpt'>
<?php the_excerpt() ?>
</div>
<div class='post-meta'>
<time><?php the_time( 'Ymd' ) ?></time>
<?php if ( has_category() ) : ?>
<span class='post-categories'><?php the_category( ', ' ) ?></span>
<?php endif ?>
</div>
</div>
<?php endwhile ?>
<?php else : ?>
<h2>There are no posts here</h2>
<p>Do you want to go back to the <a href='<?php echo site_url() ?>'>home page?
<?php endif ?>

ここで表示されるコンテンツは、すでに説明したクエリによって決定され、そのコンテンツがどのように表示されるかはループによって異なります。 このカスタマイズの量は素晴らしく、それが WordPress を際立たせるものです。

よくやった! これで、ポストループとは何かがわかりました。

コードを使用してメインクエリを変更する

始める前に、何をしようとしているのかを理解していないと、メインクエリを変更すると予期せぬ結果が生じる可能性があることを警告しておく必要があります。 実験するときは注意してください。

コア機能を変更したい場合は、フックを確認する必要があります。 フックを使用すると、テキストの長さの変更、ログイン画面の変更、エラー メッセージの言い換え、カスタム投稿タイプの変更などを行うことができます。

add_action( 'pre_get_posts', 'my_exclude_category' );
function my_exclude_category( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
$query->set( 'cat', '-92' );
}
}

メインクエリを実行する前に、 pre_get_postフックを使用してメインクエリのパラメータを変更していることに注意してください。 上記のコードは前のコードと同じことを行いますが、今回はホームページからカテゴリ 92 を除外します。 したがって、メインクエリが変更されます

is_home()関数とis_main_query()関数を見てください。 彼らは、クエリがホームページ上でのみ変更され、それがメイン クエリであるかどうかを確認するためにここにいます。

WordPress ブログループで役立つ別のコードを次に示します。

Web サイトの作成者がコンテンツの一部 (またはすべて) を盗用しており、その投稿をすべて永久に、または問題が解決されるまで削除したいとします。

これは、次のようなコードを追加することで実行できます。

add_action( 'pre_get_posts', 'my_exclude_author' );
function my_exclude_author( $query ) {
$query->set( 'author', '-23' );
}

この条件付き関数を使用すると、Web サイトとバックエンドの両方から作成者の投稿を削除できます。 すべてのコンディショナルタグは WordPress Codex で見つけることができます。 最終的に最後のコードは次のようになります。

add_action( 'pre_get_posts', 'my_exclude_author' );
function my_exclude_author( $query ) {
if( !is_admin() ) {
$query->set( 'author', '-23' );
}
}

WordPress ループに関するよくある質問

そもそも、WordPress ループとは何ですか?

ああ、これで元に戻ります! つまり、核となるWordPress ループは、サイト上のデータベースのコンテンツを表示する WP のエンジンです。

これは多くの WP テンプレートの中心であり、どの投稿またはページをどのような順序で表示するかをシステムに指示します。 ゲストのために適切な曲 (または投稿) を選ぶ、WordPress パーティーの DJ のようなものだと考えてください。

テーマ開発においてループがそれほど重要なのはなぜですか?

ああ、テーマ開発、毎回楽しいパズルです! ループは WordPress テーマのバックボーンのようなものです。 それがなければ、テーマはプロットのないサイレント映画になってしまいます。

WP_Queryパラメータに基づいてコンテンツを取得し、テンプレート タグを通じて、コンテンツの表示内容と表示方法をカスタマイズできます。 特定の投稿に特別なスタイルを備えたテーマについて聞いたことがありますか? そう、それがループの魔法なのです。

WP_Query はループにどのように関係しますか?

さて、ここで私と一緒に飛び込んでください。 WP_Query は、コンテンツを定義して取得するクラスです。 次にループは、WP_Query が返す結果を処理します。

WP_Query は、ループが料理をゲストに提供している間、料理を準備するシェフであると考えてください。 そして、カスタムの投稿タイプと分類法を使用して、このシェフは幅広い料理を作り上げることができます。

have_posts() と the_post() の違いは何ですか?

古典的な質問! have_posts() は、クエリ内にループスルーする投稿が残っているかどうかを確認します。 それは、「あのプレイリストに他に曲はありますか?」と尋ねるようなものです。

一方、 the_post() は現在の投稿を設定するので、その詳細を表示する準備が整います。 次のトラックの再生ボタンを押すのと似ています。 どちらもループのダンスにおいて非常に重要です。

ループ内に表示される投稿をカスタマイズするにはどうすればよいですか?

ああ、カスタマイズの力ですね! 表示される投稿を変更するには、 WP_Queryパラメーターを調整するか、 pre_get_postsフィルターを使用します。

カテゴリ ループタグ ループ、その他のカスタム クエリのいずれであっても、できることはたくさんあります。 特定のカテゴリの投稿を表示したいですか? それともカスタムフィールドで並べ替えるのでしょうか? 世界はあなたのものです!

1 ページに複数のループを含めることはできますか?

もちろんです! 複数のループは、メインの記事リストの後に最近の投稿を含むサイドバーなど、さまざまなセクションが必要な場合に特に重要です。

各カスタムWP_Queryの後にwp_reset_postdata()を使用してループをリセットするだけです。 テンプレート パーツを使用すると、さらに整理されます。 やりすぎないように注意してください。乱雑なパーティーを好む人はいません。

ループのコンテキストにおけるコンディショナルタグとは何ですか?

したがって、条件付きタグはループの門番です。 これらを使用すると、特定のコンテンツをいつどこに表示するかを制御できます。

これらを使用して、単一の投稿のみ、または特定の分類法でのみコンテンツを表示することができます。 彼らは WP クラブの用心棒のようなもので、ゲストリストに基づいて誰が入場するかを決定します。

ループにページネーションを追加するにはどうすればよいですか?

ああ、ページネーション、訪問者を圧倒しないための技術です。 ページネーション機能を使用すると、投稿を複数のページに分割できます。

終わりのない投稿リストを表示するのではなく、ユーザーに一息与えてください。 ここでは、 paginate_links()や古典的な「次と前」リンクなどの関数が役に立ちます。 なぜなら、本当のことを言うと、永遠にスクロールしたい人はいないからです。

なぜメインクエリを変更する必要があるのでしょうか?

いいですね! 場合によっては、デフォルト設定だけではうまくいかない場合があります。 ホームページに特定のカスタム投稿タイプのみを表示したり、特定のカテゴリを除外したりしたい場合があります。

pre_get_postsアクションを使用すると、新しいクエリを作成せずにメイン クエリを調整できます。 完璧なサウンドを得るためにステレオのメイン設定を調整するようなものです。

ループに問題がある場合はどうなりますか?

ああ、そこにいたんだ! ループに問題があると、サイトにコンテンツが表示されなかったり、さらに悪いことにエラーがスローされたりする可能性があります。 いじる前に必ずバックアップをとってください。 WP_Queryパラメータとテンプレート階層を確認してください。

他のすべてがうまくいかない場合は、 WordPress Codexとコミュニティ フォーラムがトラブルシューティングの宝庫となります。 すべての開発者は少なくとも一度は不具合のループに直面することを忘れないでください。 あなたはこれを得ました!

WordPress ループについての考えを終わらせる

WordPress ループの使用は、投稿、ページ、または簡単に言うと Web サイトをカスタマイズするための優れた方法です。 このループでは、WordPress の仕組みとコード ロジックについての基本的な理解が必要です。

簡単なテストを行う場合を除き、query_posts() 関数の使用はお勧めしません。 元のクエリを変更する必要がある場合に備えて、さまざまなフックを使用できます。 WordPress ループコードを変更するときは常に注意してください。

この記事が、WordPress ループをマスターするための良い第一歩になれば幸いです。

WordPress ループに関するこの記事を気に入っていただけた場合は、以下もお読みください。

  • WordPress の 504 エラー: 修正方法
  • WordPress プレミアム プラグインまたはテーマを成功させるための 12 のヒント
  • WordPress でブラウザ キャッシュを活用するにはどうすればよいですか? 従うべき手順