既存のWordPressプロジェクトをローカルで動かす事になった場合からのWordPress入門


ブログサイト案件で、WordPressを使わざるを得なかった時に、初めてながら四苦八苦した思い出を綴ります。なんとなくどこで何が行われているかを理解するまでの過程について語ります。
つまり、WordPress初めてという方、さらに既にあるWordPress案件に突っ込まれた方向けになっております。
今回は

- OSX 10.11
- PHPビルトインサーバー(MAMPなし)
- MySQL

で行いました。

# 最初に
今までWebを本業とはせず、PHPも一応読める少し書けるくらいの力量で足突っ込んだ案件。しかもWordPressがどう動いているかも分からず。既存のサイトがあったのでそのソースコードをもらってローカルで動かそうにも、まったく何も分からないそんな状態でした。
WordPressがどういったアプリケーションかについては、ぜひ調べてみてください。

# サイト表示まで
ここでまず詰まりました。なんたって、ノリで動かせると思っていたんですもの。
とりあえずPHPのビルトインサーバーで実行して`http://localhost:8000`にアクセスするも

```
Call to undefined function get_header() in /***/index.php on line 1
```

WordPressがインストールされていないということでした。それもそのはず、`get_header()`はWordPressの関数ですからね。


## WordPressのインストール
[WordPressの公式サイト](https://ja.wordpress.org/)でダウンロードします。zipファイルを解凍すると必要なソースコードが多く含まれているのが分かります。これだけでインストール・準備は完了です。

## PHPビルトインサーバーで実行
先程のディレクトリで`php -S localhost:8000`を実行。そして`http://localhost:8000`にアクセスすると、WordPressの設定画面が開かれます。
ここで設定を進めようとするとデータベースの項目について聞かれます。WordPressではデータベースを使用するので、その設定も進めましょう。

## MySQLの設定
行う事は、

- ユーザの作成
- データベースの作成
- 権限の付与

になります。ローカルで動かすだけなので、好きなアカウント・データベース名を使って問題ないと思います。
必要な方は、[こちらの記事](http://qiita.com/himitech/items/342235828a4c2513dd4d)のMySQLの設定で詳しくコマンドについても書かれているので参考にしてください。

## WordPress実行・設定
もう一度ビルトインサーバーで実行します。そして上記で設定したデータベースの情報を入力し、その後ユーザを作成して終了です。これで、見事、自分のブログを持つことができました！

### HomebrewでMySQLをインストールしている人向け
HomebrewでMySQLをインストールした方は、ここで躓くようです。具体的には、上のデータベース情報を入力後、データベース接続確立エラーになります。
これに関しては[この記事](http://qiita.com/kon_yu/items/056281eb3a017d7051ec)で詳しく説明されています。要約するとソケットの設定が間違っているから設定し直してねって事ですね。

## WordPressに触れてみる
上記で設定したユーザ・パスワードでログインします。そうすると、
<img width="640" alt="スクリーンショット 2016-04-28 16.28.38.png" src="https://qiita-image-store.s3.amazonaws.com/0/88553/76280522-77b3-af58-eb8f-a6f8fadca3fe.png">

こんな画面が表示されますね。これで成功です。
眺めてみると、ここから色々と設定したり、記事を投稿したりするという事が分かります！UIも分かりやすいですし、何よりGUIで投稿できるって良いですね。便利。

# テーマの反映
インストールはできたけど、渡されたソースコードは何に使うの！？となりました。

## テーマのソースコード
渡されたソースはテーマのものでした。`index.php`や`404.php`を含んでおり、他のテーマのファイル構成と似ていたので分かりました。

ソースコードがテーマのためのものであるということは、WordPress上の`外観/テーマ`から変更する必要があるという事です。
とりあえず渡されたコードをフォルダごと、`/wp-content/themes/`につっこみます。そうすると、WordPressの設定画面(ログインした先の画面)のテーマに自動追加されます。そして、それを選ぶだけです。簡単ですね。
変更してからホームページにアクセスすると、渡されたソースの通りに変更されている事が分かるはずです。(ちなみに自分はこの時レイアウトが崩れまくってました)


# サイトのカスタマイズ
サイトの表示もできましたし、早速コードを読んで行こうと思いまして、少しずつ構造について学び始めました。ただレイアウトが崩れまくっていたので、それの原因も探りつつ…

## ファイルについて

- `index.php`
- `header.php`
- `footer.php`
- ...

など、こういった必須ファイルがあるようです。(詳しくは調べてください)
ファイルを組み合わせてカスタマイズされるようですね。ひとまずこの辺りのソースコードを読んで、どこで何が表示されるかについて理解を深めました。

## ルーティング
ある程度のルーティングはWordPressが行ってくれるようです。そのために上記の`index.php`や`header.php`が存在しています。これらのファイルを作ると、自動的に整形してくれるようですね。(ヘッダとか、サイドバーとか、勝手に設置してくれます)
また、適度にファイルを準備すれば適度にルーティングも行ってくれます。いつもルーティングを自分に書いてたので、最初は意味が分かりませんでしたが。ただ、そのためには固定ページなど、そういった概念も理解しなければなりません。

## 固定ページ
Aboutページとか、Contactページとかソースにあるのに、遷移できない！って場合は固定ページを足さなければなりません。
WordPressの編集画面から固定ページを選び、新規追加します。そして、テンプレートから追加したいファイルを選んでください。

### パーマリンク
パーマリンクとは、URLを示します。固定ページ毎、記事のページ毎に設定できます。

<img height="50" alt="スクリーンショット 2016-04-28 16.39.53.png" src="https://qiita-image-store.s3.amazonaws.com/0/88553/11276dd3-1a40-9778-fccd-9970aa8b25c1.png">

パーマリンクの設定を以上のようにしておくと、ボタンが`変更`から`編集`に変わるので、好きなURLに変更できます。

<img width="640" alt="スクリーンショット 2016-04-28 16.42.10.png" src="https://qiita-image-store.s3.amazonaws.com/0/88553/4ca67609-434e-86a4-97c1-217dca8d6329.png">

これで何ができるかと言うと、
`http://localhost:8000/?page=2`
みたいなGETパラメータを使ったURLではなくて、
`http://localhost:8000/about`
と自分が指定したURLを使う事ができます。(勿論aboutの部分は編集できます)

例えば、トップページから`href="/about"`でリンクが貼られているのに遷移しない！って場合とかです。ここでURLを指定することによって遷移させる事ができます。

# 終わり

きっとこれで大体動くでしょう！自分の場合は動きました。まあ問題としてはデータが0って事です。
ひとまずこれで大体構造を理解したので、コードを読み進める作業に移る事ができそうです。
これからは[WP-CLI](http://wp-cli.org/)を使ったりして、引き継ぎに優しいエンジニアになろうと思います。


# 他に巡りあったエラーについて

## うまく表示されない
PHP的に途中でエラーが起きるとそれ以降が表示されないので、エラーは潰していきましょう。

## プラグインの導入
うまく表示されない１つの原因としてプラグインが正しく導入されていない場合があります。`Undefined ~()`とか言われたら、プラグインで足りていないものがないか確認してみましょう。