【WordPress】WordPressはWebサイトをどのような仕組みで表示しているのか
wordpressで作成されたwebサイトがどのような仕組みでページを表示しているのかを、以下のポイントから見ていきたいと思います。
- wordpressはphpで構成されたシステム
- MySQLはデータベース管理システム
- wordpressにおけるクエリとは
- クエリとループの関係
webサイトが表示される仕組み
webサイトはクライアントから表示リクエストが要求されると、裏側でそのリクエストを表示するための処理が行われます。wordpressの中にはたくさんのphpプログラムが入っていて、このphpプログラムが処理を実行しています。wordpressで作成された動的なwebサイトでは、表示に必要なデータをphpがデータベースから検索・取得し、それをブラウザ上で閲覧できるデータに変換して、クライアントのリクエストに応えています。
アップロードしたデータはどこに保存されているのか
wordpressで作られたwebサイトは、PHPとMySQLで構成されています。wordpressから投稿したデータは、画像やPDFなどのメディアファイルはweb領域に、テキストなどの文字情報はデータ管理システムであるMySQLに格納されます。MySQLにも、アップロードしたメディアのファイル名やアップロード時間、紐づいている投稿のIDなどの情報は保存されます。
クエリとは何者なのか
wordpress内におけるクエリとは、様々な条件を指定してデータを取得できる指示のことです。クエリにはメインクエリとサブクエリの2種類があり、それぞれ違った役割を担っています。
メインクエリは自動的に生成されるクエリで、ページを表示した時点でどのデータを取得するのか決まります。ページが表示されたとき、というのはURLに基づいてデータベース内を検索しているということです。つまり、wordpress内のどのphpファイルを表示するかで生成されるクエリが自動的に決定するのです。なので、single.php や archive.phpなどのテンプレートファイルではクエリを発行する必要がありません。
次に、サブクエリとはメインクエリ以外のすべてのクエリのことです。サブクエリはメインクエリとは違い、自動でデータを取得することはありません。なので、メインクエリが自動で取得した投稿データ以外の条件で投稿を取得したい場合に、このサブクエリを流してあげます。
例えば、カテゴリごとの記事一覧を取得したい場合や、カスタム投稿タイプで作成した投稿を同じページ内で取得したい場合などです。メインクエリでは取得されていない情報をサブクエリで取得するということです。
クエリとループの関係
データベースを検索する条件がクエリで、このクエリで取得したデータをページに表示するための処理がループです。メインクエリではメインループ、サブクエリではサブループが行われています。
<?php
$news_query = new WP_Query(
array(
'post_type' => 'post',
'category_name' => 'news',
'posts_per_page' => 5,
)
);
?>
<?php if ( $news_query->have_posts() ) : ?>
<?php while ( $news_query->have_posts() ) : ?>
<?php $news_query->the_post(); ?>
<p>処理内容</p>
<?php endwhile; ?>
<?php endif; ?>
<?php wp_reset_postdata(); ?>
私たちが普段phpに記述している、いつものやつです。これがサブループの記述ですね。
二行目の$news_query = new WP_Query
内の記述が、サブループで取得したい投稿の条件を指示している部分です。
サブループを記述する上で大切なのは、最後に必ずクエリをリセットするということです。サブクエリはメインクエリを上書きする処理が行われています。なので、複数の種類の投稿を同じページ内に表示させたいと思ったときにうまくいかなくなります。
wordpressの基本的な仕組みについてでした。データの流れがわかると、サイトを引っ越しするときや、エラーが起こってしまったときに役に立ちます。
良かったら参考にしてください。
関連記事