2024年06月13日
2.WPプログラムの基本
WordPressでプログラミングを行う為には下記の事を理解する必要があります。
1.テンプレートとは
下記に詳細を解説していきます。
1.テンプレートとは
テンプレートとはWordPressルールに従って記述されたPHPファイルです。
テンプレートにすると下記のグローバル変数が紐づけられます。
このグローバル変数の中で一番重要な変数は下記の2つです。
項番 | グローバル変数名 | 解説 |
1 | $post | DBに問い合わせた結果の文書の情報がセットされたオブジェクト |
2 | $wp_query | DBに問い合わせした結果の総ての情報がセットされているオブジェクト |
■オブジェクトとは何かは[PHPのオブジェクト処理]を参照してください。
1.$post にセットされている主要情報
プロパティ | データ型 | 解説 |
post_type | 文字列 | 投稿情報タイプ
投稿:'post' 固定ページ:'page' |
ID | 整数 | 投稿ID又はページID |
post_title | 文字列 | 投稿タイトル又はページタイトル |
post_name | 文字列 | 投稿スラッグ又はページスラッグ
※パーマリンク設定で%postname%を指定している場合 |
post_content | 文字列 | 投稿内容 |
post_excerpt | 文字列 | 抜粋内容 |
post_date | 文字列 | 投稿日時 |
post_modified | 文字列 | 更新日時 |
guid | 文字列 | 投稿又は固定ページの内部URI |
例えば、上記の $post から ID を取得するプログラムは下記になります。
<?php $id = $post -> ID; ?>
■上記のIDの取得は、WordPress関数の get_the_ID() でも取得できます。
2.$wp_query には、表示する全ドキュメントのデータが保存されています。
その中で、発見したドキュメント数に関連するプロパティには下記の様なものがあります。
プロパティ | データ型 | 解説 |
found_posts | 整数 | メインクエリーquery_posts()が検索したドキュメント数
カテゴリや検索等の一覧ページの場合は n が設定されています。 固定ページや投稿ページの場合は 1 が設定されています。 |
post_count | 整数 | 1ページに表示する投稿数
[設定→表示設定]の[1ページに表示する最大投稿数]の値が設定されています。 |
max_num_pages | 整数 | ページ数
[found_posts]を[post_count]で割った数(整数、切り上げ)た値が設定されています。 |
例えば、下記の found_posts 取得する方法は下記になります。
<?php $count = $wp_query -> found_posts;?>
■上記を取得するWordPress関数はありません。
2.既存のテンプレートの種類
既存のテンプレートには下記種類があります。
ファイル名 | 解説 |
front-page.php | サイトのURLが指定された時に実行されるテンプレート |
home.php | 同上
front-page.phpが存在しない場合に呼ばれます. 但し、上記はホームページの表示で[最近の投稿]を選択した場合です。 [固定ページ]を選択した場合は[page.php]が呼ばれます。 |
front-page.phpに記述する内容
ECサイト等の場合は、投稿や固定ページと関係ない商品リスト等のプログラムを記述します。
管理画面の[設定→表示設定]の[ホームページの表示]で[固定ページ]を選択した場合は、指定した固定ページを表示するプログラムを記述します。
又、[ホームページの表示]で[最近の投稿]を選択した場合は、カテゴリ表示等のリスト表示系のプログラムを記述します。
ファイル名 | 解説 |
page.php | 固定ページを表示する時に実行されるテンプレート |
single.php | 投稿ページを表示する時に実行されるテンプレート |
category.php | カテゴリを表示する時に実行されるテンプレート |
tag.php | タグを表示する時に実行されるテンプレート |
search.php | 検索結果を表示する時に実行されるテンプレート |
archive.php | アーカイブ(保存記録)を表示する時に実行されるテンプレート
[category.php]や[ tag.php]が無い場合もこのプログラムが使われます |
ヘッダー、サイドバー、フッターは、サイトの体裁を決める重要なプログラムです。
よってこれらは独立したプログラムとし、他のテンプレートからCALLされます。
ファイル名 | 解説 | CALLする関数 |
header.php | 画面上部のサイトタイトルやメニュ等を表示するテンプレート | get_header() |
sidebar.php | 本文の左右にサイドメニュ等を表示するテンプレート | get_sidebar() |
footer.php | 画面下部の著作権表示等を表示するテンプレート | get_footer() |
ファイル名 | 解説 |
index.php | テンプレートが無い時に、最後に利用されるテンプレート |
404.php | 指定したURLが無い時に実行されるテンプレート |
メモ
上記の既存テンプレートをカスタマイズする場合は、対象テンプレートを子テーマにコピーしてからカスタマイズします。
尚、子テーマの作成方法はここでは解説しません。他のサイトを参照してください。
3.新規テンプレートを作成する方法
ユーザが作成したPHPプログラムをWordPressのテンプレートとして登録する事ができます。
テンプレートの基本構造は下記になります。
<?php /******************************* 固定ページ お問い合わせ Template Name:contact *******************************/ get_header(); // WordPressの開始処理とヘッダーが記述されています ここに新規テンプレートとしての処理を記述します。 get_footer(); // WordPressの終了処理とフッターが記述されています ?>
■PHPのファイル名は任意名称です。
例)main.php等
■上記のPHPファイルのコメント欄に[Template Name:任意文字列]を宣言をすると、WordPressはこのプログラムをテンプレートと認識してくれます。
テンプレートと認識されると、宣言なしでグローバル変数を利用する事ができると共に、固定ページの[テンプレート]設定で、上記の[テンプレート名]が表示され、これを選択するとこのPHPプログラムが動きます。
例)テンプレートで[contact]を選択すると[main.php]が実行されます。
■新規テンプレートには最低限 get_header() とget_footer() の記述は必須です。
get_header()でWordPressの初期処理が行われ、get_footer() で終了処理が行われます。
4.関数を作成する方法
WordPressのテーマの中には[functions.php]というファイルがあります。
この中に新規関数やWordPressの各種機能の設定を記述する事ができます。
しかし関数はテンプレートではないので、グローバル変数を利用する場合は下記宣言が必要になります。
<?php
global $post,$wp_query;
グローバル変数を使ったプログラム
?>
例えばパンくずを作成する関数は現在のページの種類が判らないとプログラムできません。
そこで上記指定でグローバル変数を読めるようにしてプログラムを作成します。