リリイログ Written by Yumi Nakamura

【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のカスタマイズには、基本的な仕組みを理解しておくことが大切です。
メインクエリフックという単語を、思い出しましょう。