2022年04月29日

2.WPプログラムの基本

WordPressでプログラミングを行う為には下記の事を理解する必要があります。

1.テンプレートとは

2.既存テンプレートの種類

3.新規テンプレートを作成する方法

4.関数を作成する方法

下記に詳細を解説していきます。

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.既存のテンプレートの種類

既存のテンプレートには下記種類があります。

1.TOPページのテンプレート

ファイル名 解説
front-page.php サイトのURLが指定された時に実行されるテンプレート
home.php 同上

front-page.phpが存在しない場合に呼ばれます.

但し、上記はホームページの表示で[最近の投稿]を選択した場合です。

[固定ページ]を選択した場合は[page.php]が呼ばれます。

 front-page.phpに記述する内容

ECサイト等の場合は、投稿や固定ページと関係ない商品リスト等のプログラムを記述します。

管理画面の[設定→表示設定]の[ホームページの表示]で[固定ページ]を選択した場合は、指定した固定ページを表示するプログラムを記述します。

又、[ホームページの表示]で[最近の投稿]を選択した場合は、カテゴリ表示等のリスト表示系のプログラムを記述します。

 

2.文書を表示するテンプレート

ファイル名 解説
page.php 固定ページを表示する時に実行されるテンプレート
single.php 投稿ページを表示する時に実行されるテンプレート
category.php カテゴリを表示する時に実行されるテンプレート
tag.php タグを表示する時に実行されるテンプレート
search.php 検索結果を表示する時に実行されるテンプレート
archive.php アーカイブ(保存記録)を表示する時に実行されるテンプレート

[category.php]や[ tag.php]が無い場合もこのプログラムが使われます

 

3.上記の1や2から呼ばれるテンプレート

ヘッダー、サイドバー、フッターは、サイトの体裁を決める重要なプログラムです。

よってこれらは独立したプログラムとし、他のテンプレートからCALLされます。

ファイル名 解説 CALLする関数
header.php 画面上部のサイトタイトルやメニュ等を表示するテンプレート get_header()
sidebar.php 本文の左右にサイドメニュ等を表示するテンプレート get_sidebar()
footer.php 画面下部の著作権表示等を表示するテンプレート get_footer()

 

4.その他のテンプレート

ファイル名 解説
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;
    グローバル変数を使ったプログラム
?>

例えばパンくずを作成する関数は現在のページの種類が判らないとプログラムできません。

そこで上記指定でグローバル変数を読めるようにしてプログラムを作成します。

 

関数一覧
  • 1.WPのエスケープ処理
  • 2.WPプログラムの基本
  • 3.ヘッダ/フッタ/サイドバで使われる関数
  • 4.DBからの読込関数
  • 5.一般テンプレートの中で使われる関数
  • 6.その他のWP関数
  • add_shortcode()
  • bloginfo()
  • body_class()
  • date_i18n()
  • dynamic_sidebar()
  • edit_post_link()
  • esc_attr()
  • esc_html_e()
  • esc_html()
  • esc_url()
  • get_ancestors()
  • get_cat_ID()
  • get_cat_name()
  • get_category_link()
  • get_category_parents()
  • get_category()
  • get_footer()
  • get_header()
  • get_home_url()
  • get_post_format()
  • get_post_meta()
  • get_post_thumbnail_id()
  • get_query_var()
  • get_search_query()
  • get_sidebar()
  • get_site_url()
  • get_stylesheet_directory_uri()
  • get_stylesheet_uri()
  • get_template_directory_uri()
  • get_template_part()
  • get_the_category()
  • get_the_content()
  • get_the_date()
  • get_the_excerpt()
  • get_the_ID()
  • get_the_modified_date()
  • get_the_modified_time()
  • get_the_permalink()
  • get_the_post_thumbnail()
  • get_the_tags()
  • get_the_time()
  • get_the_title()
  • get_uploaded_header_images()
  • get_year_link()
  • has_category()
  • has_custom_logo()
  • has_header_image()
  • has_header_video()
  • has_nav_menu()
  • has_post_thumbnail()
  • has_tag()
  • header_image()
  • home_url()
  • is_admin()
  • is_category()
  • is_date()
  • is_front_page()
  • is_home()
  • is_main_query()
  • is_page()
  • is_search()
  • is_single()
  • language_attributes()
  • the_category()
  • the_content()
  • the_custom_header_markup()
  • the_custom_logo()
  • the_date()
  • the_excerpt()
  • the_ID()
  • the_modified_date()
  • the_modified_time()
  • the_permalink()
  • the_post_thumbnail()
  • the_search_query()
  • the_tags()
  • the_time()
  • the_title()
  • update_post_meta()
  • wp_get_attachment_image_src()
  • wp_nav_menu()
  • WP_Query()