【YouTube講座】デモ付き!WordPressの使い方を根本的に理解するための仕組み解説!から覚書
アキユキ / Webデザイナー戦略室さんの動画を視聴しました。
WordPressの仕組みを理解していないと、ただコードをコピペでひっぱって来ても、うまくいかないそうです。
WordPressの基本的な仕組みを理解する
WordPressの基本的な仕組み、概念を理解しましょう。
WordPressの仕組み:既定の処理
URLルーティング/リクエスト解析
メインクエリ(データベース検索)
テンプレート ファイル出力
URLルーティングは、URLがおくられてきた時に、何をしますか?ということ。トップページのURLが来たら、トップページを表示する。
メインクエリでは、何の情報が必要かと、リクエストを解析して、条件に応じて、データベースから、データを抽出してくる。
テンプレート、ファイル出力では、適切なテンプレートを選んで、データ出力をする。
このように、既定の処理が決まっています。
WordPressの仕組み:フック
URLルーティング/リクエスト解析 ← フック
メインクエリ(データベース検索) ← フック
テンプレート ファイル出力 ← フック
フック
特定の条件をつけて、ひっぱってくる情報を絞り込む時、決まった処理ではなく、カスタマイズした込み入った処理をする時に、フックを使います。
フックが使えないと、柔軟な対応ができません。
いろんなフックがあります。
テンプレートファイル
トップページだったら、どのファイルを使って表示するか。
page.phpは、固定ページを表示する。
front-page.php はトップページを表示する
テンプレートファイルには、優先順位がある。
page-abc.phpがある時は、page.phpよりも優先して、page-abc.phpが読まれる。
page.phpがもしなかったら、index.phpが読まれる。
front-page.phpを見てみよう
front-page.php を見ると、
<?php if(have_posts()):while(have_posts()):the_post(); ?> <li> <a href="<?php the_permalink(); ?>"> <div class="outline"> <div class="date"><?php echo get_the_date('Y.m.d'); ?></div> <div class="title"><?php the_title(); ?></div> </div> </a> </li> <?php endwhile; ?> <?php endif; ?>
投稿がある限り、表示してくださいという命令文になっています。
この投稿というのは、メインクエリで抽出された投稿です。
have_posts
ループできる結果があるかどうかをチェックする関数。TRUE または FALSE を返します。
「have_posts()」は、条件の「== true」が省略された書き方
have_posts() == true
the_post()
1件の記事を取得するWordPress関数
while(have_posts()):the_post()
WordPressデータベースから取り出した投稿・固定ページを1件ずつ表示していく(1ページに10件表示など)
while → 処理を繰り返す構文
have_posts() → 次の記事があるか調べる
the_post() → 次の記事を取得する
管理画面のホームページの表示設定で、最新の投稿から、固定ページを選ぶと、トップページの表示は、phpを書き換えてないのにも拘らず、固定ページを表示するようになります。
どうしてなのかというと、メインクエリで、何を表示させるかを決定しているからです。
<?php the_permalink(); ?>は、メインクエリが指定したページを表示させる命令です。
メインクエリを変更してカスタマイズする時に、必要なのは、functions.php です。
functions.phpを見てみよう
add_action{‘pre_get_posts’,’news_posts_per_page’};
pre_get_posts が、メインクエリを制御する、フックです。
まとめ
WordPressのカスタマイズには、基本的な仕組みを理解しておくことが大切です。
メインクエリとフックという単語を、思い出しましょう。