カテゴリー別アーカイブ: WordPress

2013年7月13日PM1時42分更新

【準備編】wordpressの為のPHP習得~環境を整える~


wordpress

前回の記事ではPHPの実行環境について考えました。wordpressのカスタマイズを目的としたPHP習得に関して言えばwordpress上でPHP学習を行うのが一番だと思います。具体的には固定ページテンプレートファイルを用いるのが簡単ではないかと思います。固定ページの挙動や表示を決定するファイルなのですが、選択しない限り、使われることの無いファイルです。関数を設定するfunction.phpという手もあるのですが、なにか不都合があるとWordPress全体の動きに影響を与え兼ねません。また直接表示ができるファイルではないので、出力が分かりにくいです。

固定ページテンプレートファイルであれば、気軽に作ったり削除したりできますし、PHPの習得にはもってこいだと思います。今後はこのファイルを用いて行きたいと思います。

では準備です。

固定ページテンプレートファイルはデフォルトで「pege.php」があります。固定ページは初期設定でこのファイルに記述されている内容を元に表示されることになります。その為「pege.php」をphp学習に使うとデフォルト状態の固定ページの表示が崩れてしまうことになりかねません。しかし固定ページテンプレートファイルは複数存在させることができます。

固定ページテンプレート

固定ページテンプレートを複製する

FTP等で「page.php」をダウンロードしてください。このファイルはthemesフォルダの中にある現在使用しているテーマのフォルダに入っています。ダウンロードしたらテキストエディタ等で開いて内容をすべて消してください。そして以下の内容を記述してください。

 <?php /* Template Name: phppage */ ?>

「/* Template Name: phppage */」の部分でテンプレートの名前を宣言しています。これはWordPressの仕様です。「phppage」がテンプレート名になり、ファイル名もこれに合わせますので「phppage.php」で保存しなおしてください。テンプレート名は任意ですので、phppageである必要はありません。テンプレート名とファイル名が同一であれば好きな名前で構いません。

このファイルを「page.php」と同じフォルダにFTP等でアップロードしてください。この作業をしておくことで「phppage.php」は固定ページテンプレートであると認識されます。そして管理画面の「テーマの編集」画面のファイル一覧に表示されることになります。これでファイルを編集する度にアップロードして…という手間なくWPの管理画面上でPHPの記述ができるようになります。

追加

テンプレートファイルが認識され一覧に現れる

固定ページを作り、新しく複製した固定ページテンプレートファイルを割り当てる

次に新規に固定ページを作ります。管理画面の固定ページメニューの新規追加で固定ページを追加してください。ページタイトルはなくてもいいのですが、便宜的に「PHP学習」にしておきましょう。固定ページの編集画面のサイドにある「ページ属性」の設定のテンプレートを先ほど作成したphppageで設定してください。そして「下書きとして保存」してください。

固定ページを追加

固定ページを新規追加する

属性

ページ属性のテンプレート設定をphppageにする

下書きとして保存

下書きとして保存ボタンで保存

これで準備ができました。今後は「phppage.php」を「テーマの編集」で編集して、結果を固定ページ「PHP学習」のプレビューで見るといった形でPHPの学習していくことになります。

何も表示されない

さて早速固定ページ「PHP学習」のプレビューをしてみましょう。多分なんにも表示されないと思います。ヘッダーやサイドバーも含めて真っ白で表示されるかと思います。心配しなくても大丈夫、それで合っています。でもなんだか気持ち悪いので、ちゃんとサイトが表示される状態にしましょう。

WordPressではヘッダー、サイドバー、フッターなどはWordPressが用意している関数で読み込む形となっています。部品といったイメージですね。以下の関数を記述することでちゃんとサイトが表示されるようになります。

  • get_header()
  • get_sidebar()
  • get_footer()

字面を見ただけでどんな動作をしそうかわかりそうな関数名ですね。get_header()がヘッダー部分、get_sidebar()がサイドバー部分、get_footer()がフッター部分を読み出す関数です。

PHPではPHP言語の内容としてもともと用意されている関数以外に自分でも関数を設定することができます。何か一連の計算や処理をまとめて関数にしておくと、記述がしやすいですし、使いまわしもできます。上記に挙げたget_header()等の関数はWordPressが独自で設定した関数なのです。関数の設定の仕方はおいおい説明していきたいと思います。

きちんとサイト表示させる

ちょっと話がずれましたが、サイト表示をさせるために、「phppage.php」を「テーマの編集」にて以下のような内容に修正してください。

 
<?php 
/* Template Name: phppage */
get_header(); ?>
<?php get_sidebar(); ?>
<?php get_footer(); ?>

ファイルの更新ボタンを押して保存したら固定ページ「PHP学習」をプレビューしてみましょう。ヘッダー、サイドバー、フッターは表示されましたか?現時点ではコンテンツは何もないので本来タイトルや記事がある場所は空白のままになっていると思います。

「<?php」と「?>」

PHP

一旦環境が整ったので決まりごとの確認です。PHP構文は「<?php」と「?>」の間に記述することが必要です。これは「ここからここまでがPHPです。」と宣言をしているのです。この宣言がないとPHPと判断されず、WordPressの固定ページテンプレートファイルなら、記述したコードがそのままの文字で出力されてしまうか、エラーが起きます。PHPを記述する際には必ず必要なので覚えてください。「phppage.php」でも「<?php」と「?>」が入っていますよね。

現在「phppage.php」は複数の「<?php」と「?>」の対があります。一つのファイルでいくつも「<?php」と「?>」の対を記述しても問題ありません。しかしながら「phppage.php」の内容を以下のようにしても今のところプレビュー結果は同じくなります。

 
<?php /* Template Name: phppage */
get_header();
get_sidebar();
get_footer(); ?>

PHPの構文的にはこの記述でも合っていますし、むしろ文字数がすくなくなります。ではなぜわざわざ、それぞれの関数ごとに「<?php」と「?>」の対で区分けるような記述を用いるのか?これはWordPressのPHPファイルがhtmlと併存して記述されることになるからというのが理由の一つです。もし上記のような書き方をしてしまうと、ヘッダーとフッターの間にhtmlを記述出来なくなってしまいます。(不可能ではないのですが現時点では説明が難しいので「出来ない」ととらえてもらえればと思います)htmlは「<?php」と「?>」の間に記述すると、PHPの記述として見られてしまうのでエラーが起きます。その為、PHP構文とhtml記述を併存させる為に、明示的に部品や構造の区切りごとに「<?php」と「?>」の対で区分けるような記述を用いているのです。

「;」と「/*」「*/」について

php

get_header()にもget_sidebar()にも最後に「;」がついています。これもPHPの言語仕様で、「ここで行の終わり」という意味です。「<?php」と「?>」が段落だとすると「;」セミコロンは改行みたいなイメージです。行の終わりにはかならず「;」がなくてはなりません。忘れるとエラーになります。でも「/* Template Name: phppage */」のあとには「;」はついていません。これは「/* Template Name: phppage */」がコメントアウトされた行だからです。

コメントアウトとは、PHP構文として認識されなくするということです。通常はコメント、メモ書きなどを記述するときに使われます。プログラミングではコメントがとても重要です。プログラミングをしている最中はコメントやメモ書きなどがなくても理解できるのですが、時間がたってから記述を見直したりするとどのような意図で記述したのか分からなくなったりします。そのため後々の為にコメントをつけたりします。「/*」「*/」はこの間にあるすべての文字がコメントアウトされますが、対になっていないと機能しません。一行だけコメントアウトする際は「//」を用います。

エラーを体験する

注意

PHPを勉強していくと必ずエラーを体験することになります。構文が間違っていたりすると、PHPが「間違ってますよ」と教えてくれるのです。初心者の内はエラーが出ると嫌な気持ちになりますが、エラーが出ることはありがたことなのです。なぜならエラーの存在が分かるからです。PHPのエラーはどういった種類のエラーか、エラーを出した行(行数で表示)、エラーを出したファイルが表示されることになります。それを見るとエラー箇所がすぐ分かり、修正することができます。修正している内に気をつけないといけない点などが分かってくると思いますので、エラーは習得の助けと思った方がいいでしょう。

それではまずエラーを体験してしまいましょう。

「phppage.php」を「テーマの編集」にて以下のような内容に修正してください。

 
<?php /* Template Name: phppage */
get_header()
<?php get_sidebar(); ?>
<?php get_footer(); ?>

get_header();の後ろの「?>」を削除しただけですが、これでエラーが起きます。ファイルの更新ボタンを押して保存したら固定ページ「PHP学習」をプレビューしてみましょう。

 Parse error: syntax error, unexpected '?' in xxxx/xxxxx/xxxxx/xxxxx/phppage.php on line 4 

という表示になったと思います。これがPHPのエラーの表示形式です。意味を見ていきましょう。

Parse error:

Parse error:は「解析エラー」という意味です。

syntax error

syntax errorは「文法・構文のエラー」という意味です。PHPではさまざまなエラーがありますが、このようにエラーの種類を表示してくれます。

unexpected ‘?’

「unexpected ‘?’」は「予期しない?という記述があるよ」という意味です。「?>」を一個消したことで対にならず、解析上は「<?php」が浮いている状態として認識されたため「unexpected」となった訳です。

in xxxxx/xxxxx/xxxxx/xxxxx/phppage.php on line 7

そして「in xxxxx/xxxxx/xxxxx/xxxxx/phppage.php on line 7」はエラーの場所を表します。xxxxで書いている部分はパスですのでレンタルサーバーで異なります。エラーを起こしたPHPファイルの所在をパスで教えてくれているのです。「on line 4」は「エラーが解析されたのは4行目」という意味です。phppage.phpの4行目にエラーの原因となった箇所があることが分かります。

エラーの位置について

ただエラーの種類によってはそこにエラーがある、という意味ではなく、そこでエラーに気がついた、という意味の場合もあります。かならずしもエラーの場所がその行数では無い場合もあります。今回のエラーも実は3行目(空白行も1行としてカウントします)の「?>」がないのが原因ですが、解析では4行目で初めてエラーに気がついたという形であり、「on line 4」という表示となっています。

エラーの判断ヒント

なんだ?

今後もエラーに遭遇することになると思いますが、わからない場合はエラー表示のinの前の部分(上記ではParse error: syntax error, unexpected ‘?’の部分)をgoogle等で検索すると検索結果からなんらかのヒントが得られることが多いです。エラーに困ったら試してみたください。

今回は環境準備と決まりごとやエラーについて説明しました。すこしずつ本格的な内容に向かって行きましょう。