目次
第1章 WordPressとは
1.1 WordPressで何ができる?
- よく似た要件はございませんか?
- ちょうど良い湯加減で
- 必要な要件に愛を
1.2 ライセンス
1.3 WordPressが持つ魅力
- 美しい管理画面
- 豊富なテーマ
- 強力なプラグイン
- 自動アップデート
1.4 WordPressのエコシステム
- WordPress.org
- Codex ──ドキュメントリファレンス──
- フォーラム
- WordBench ──ユーザーコミュニティ──
1.5 WordPressと関わる際の心構え
- 外部設計
- 詳細設計・プログラミング
- ディレクション
- HTMLコーディング
- 【コラム】WordPressのコーディング規約
1.6 まとめ
第2章 環境の準備
2.1 WordPressの準備
- WordPressの必要環境
- データベースの準備
- WordPressパッケージの準備
- WordPressのインストール
2.2 開発環境の整備
- デバッグモードとWordPressの定数
- 【コラム】デバッグモードの有効化・無効化
- 開発に役立つプラグイン
- Debug Barプラグイン ──デバッグメニューの追加──
- Theme Check/Plugin Checkプラグイン ──テーマ・プラグインの危険性診断──
2.3 WP-CLI ──WordPressのコマンドラインツール──
- WP-CLIとは
- WP-CLIのインストール
2.4 VCCWによる環境構築 ──Vagrantベースの開発環境──
- VCCWとは
- VCCWのインストール
2.5 まとめ
第3章 基本機能
3.1 表示オプション
3.2 投稿と固定ページ
3.3 メディア ──ファイル管理機能──
3.4 カテゴリとタグ ──タクソノミー──
3.5 投稿フォーマット
3.6 テーマのカスタマイズ
3.7 ウィジェット
3.8 カスタムメニュー
3.9 ユーザーと権限
3.10 サイト設定
3.11 まとめ
第4章 プラグインによる機能拡張
4.1 Toolset Types ──エンティティの追加と構成──
- エンティティとは
- Toolset Typesの概要
- 主な機能
- 利用可能なフィールド
- 作成済みフィールドのビジュアルエディターでの利用
- 投稿タイプのリレーション
4.2 Contact Form 7 ──フォーム──
- Contact Form 7の概要
- 主な機能
- 管理画面からフォーム部品の作成
- 自動返信メール
- サンクスメッセージ・ページの設定
- メッセージ保存 ──Flamingoプラグインとの連携──
- スパムフィルタリング ──Akismetプラグインとの連携──
- 【コラム】Contact form 7に準備される多くのフック
4.3 WP Super Cache ──キャッシュ──
- WP Super Cacheの概要
- 主な機能
- mod_rewriteキャッシング・PHPキャッシング
- キャッシュの有効期限と削除スケジュール
- 受け付けるファイル名と除外するURIの設定
- 全ページキャッシュ
4.4 BackWPUp ──バックアップ──
- BackWPUpの概要
- 主な機能
- ファイル・データベースのバックアップ
- クラウド・ストレージサービスへのバックアップ
- バックアップのスケジューリング
- 【コラム】日時でのスケジューリング
- バックアップエラーのメール通知
4.5 User Role Editor ──ユーザー権限──
- User Role Editorの概要
- 主な機能
- 既存の権限グループに対する権限の付加
- 新しい権限グループの作成
4.6 Adminimize ──権限グループ──
- Adminimizeの概要
- 主な機能
- アドミンバーの表示設定
- 権限グループ共通の設定
- 管理画面共通の設定
- ダッシュボードの設定
- 管理画面の配色の設定
- その他の設定
4.7 Really Simple CSV Importer ──CSVからのデータ取り込み──
- Really Simple CSV Importerの概要
- 主な機能
- CSV形式データの投稿とインポート
- フックを使ったインポートデータの加工
4.8 Super Socializer ──SNS連携──
- Super Socializerの概要
- 主な機能
- ソーシャルコメントの追加
- ソーシャルログインの利用
- シェアボタンの利用
- 【コラム】Jetpack by WordPress.comのパブリサイズ共有
4.9 WP-Polls ──アンケート──
- WP-Pollsの概要
- 主な機能
- 複数アンケートの管理
- アンケートのスケジューリング
- 複数回答
4.10 WP Total Hacks ──WordPressでよく行うカスタマイズ──
- WP Total Hacksの概要
- 主な機能
- サイトの設定
- 投稿・ページの設定
- 外観の設定
4.11 その他の便利なプラグイン
- ImageWidget ──画像の設定──
- Google XML Sitemaps ──XMLサイトマップの作成──
- Duplicate Post ──記事の複製──
- Head Cleaner ──表示速度の改善──
- Search Everything ──検索対象の拡張──
- Regenerate Thumbnails ──画像サイズの再生成──
- Simple Page Ordering ──ページの並び順の設定──
- PS Taxonomy Expander ──カテゴリ・タクソノミーの並び順の設定──
- Redirection ──リダイレクトの設定──
4.12 まとめ
第5章 WordPressの基本アーキテクチャ
5.1 ファイル構成
- WordPressの主なファイル・ディレクトリ
- テーマとプラグイン ―― 機能の実装コンテナ ――
- テーマのファイル構成
- テーマヘッダーファイル ──style.css──
- テンプレートファイル ──index.php──
- プログラムの記述場所 ──functions.php──
- その他のファイル配置は自由
5.2 データ構成
- WordPressの主なテーブル
- 投稿タイプ
- 投稿タイプの追加
- カスタムフィールド
- 投稿データの保存と取得
- 【コラム】カスタムフィールドのUI
- タクソノミー
- タクソノミーの追加
- コメント
- 【コラム】WordPressでのデータモデリング
5.3 基本的な処理の流れ
- リクエストパラメーターとページの種類
- メインクエリと条件分岐
- テンプレート階層とメインループ
- 【コラム】フックによる適切な書き換え
- 既定の処理の変更
5.4 プラグインAPI
- フックの利用
- 2種類のフック ―― アクション・フィルター ――
- フックへの処理の登録
- フックの優先順位
- フックした関数が受け取る引数の数
- 簡単なフックの例
- 主なアクションフック・フィルターフック
- フックの探し方
- フック名で探す
- 処理の流れで探す
- 何らかのキーワードから探す
- より良いフックを探す
- オーバーライドできる関数
5.5 ページの種類
- 主なページの種類
- サイトフロントページとブログメインページ
5.6 リクエストパラメーター
- WPオブジェクト ──$wp──
- リクエストの解析
- URLのリライト
- 入力値のフィルタリング
- リクエストパラメーターの意味
5.7 メインクエリ
- WP_Queryクラス ―― WordPress検索の中心 ――
- メインクエリの意義
- 2つのメインクエリ変数 ―― $wp_query・$wp_the_query ――
- メインクエリの変更
- requestフィルター
- parse_query/pre_get_postsアクション
- query_posts()関数
5.8 クエリフラグ
- クエリフラグの役割
- クエリフラグを確認するメソッド
- 【コラム】WP_Query#is_home()と#is_front_page()の違い
- 【コラム】WPクラスの役割
5.9 テンプレートの選択
- テンプレート階層の利用
- 子テーマでのテンプレートファイルの選択
- 既定のテンプレートの変更
5.10 テンプレートタグとループ
- メインループとコンテキスト
- テンプレートタグ
- 条件分岐タグ
- インクルードタグ
- 【コラム】テンプレート構成の設計
- get_posts()によるサブループ
- 【コラム】2つのリセット
- WP_Queryによるサブループ
- 3つのループの関係の理解
- メインループ
- サブループ
- 個々のデータの表示とコンテキスト
- テンプレートタグを利用する理由
5.11 WordPressのソースコード
- ソースコードを読むにあたって
- グローバル変数とコンテキスト
5.12 まとめ
第6章 テーマの作成・カスタマイズ
6.1 テーマの作成
- テーマ作成前に検討すべきこと
- テーマの最小構成による作成例
- style.cssの記述パターン
- 【コラム】WP_Themeを直接コールしてみよう
- functions.phpの記述パターン
6.2 ビューの構成
- テンプレート階層
- 部分テンプレート
- テンプレートの書き方
- メインループ
- テンプレートタグ
6.3 テーマに関連したAPI
- ウィジェットAPI
- メニューAPI
- テーマカスタマイズAPI
6.4 テーマ作成のアプローチ
- 既存テーマのカスタマイズ ──子テーマの作成──
- なぜ子テーマを使うのか
- 子テーマを使うメリット・デメリット
- 子テーマの作成例
- スタイルのオーバーライド
- 親テーマの関数のオーバーライド
- 【コラム】関数のオーバーライドについてのコメント文を読んでみよう
- フックの実行順序
- スクラッチによるテーマの作成
- テーマフレームワークの利用 ──_s──
- スクラッチ作成における注意点
6.5 テンプレートに利用する関数
- 関数の分類
- インクルード系
- コンテンツ系
- タグ出力系
- 条件分岐タグ系
6.6 作成したテーマのチェック
- デバッグモードによるチェック
- theme-checkプラグインによるチェック
- テーマユニットテストによるチェック
6.7 まとめ
第7章 プラグインの作成と公開
7.1 プラグインの作成
- プラグインの役割
- プラグインの成立要件
- プラグインPHPファイルの作成
- プラグイン情報ヘッダー
- プラグインの実装
- プラグイン独自のCSSファイルの読み込み
- 【コラム】プラグインによるスタイルの定義
- プラグインの状態変化にフックする関数
7.2 公式ディレクトリへの登録
- readme.txtと関連ファイルの準備
- readme.txtの内容
- readme.txtの検証
- プラグインのバナー画像の作成
- スクリーンショットの準備
- WordPress.orgへのプラグイン登録申請
- svnリポジトリへのコミット
7.3 まとめ
第8章 投稿データと関連エンティティ
8.1 データ構成の概要
- wp_postsテーブルに保存される組込みデータ型
- エンティティ永続化のための3つの要素 ──投稿タイプ,カスタムフィールド,タクソノミー──
8.2 投稿タイプ
- 投稿タイプの主なAPI
- 投稿タイプの登録
- 投稿タイプの表示とその利用
8.3 カスタムフィールド
- カスタムフィールドの主なAPI
- カスタムフィールドのCRUD
- 値の取得
- 値の追加
- 値の更新
- 値の削除
- 値の取得方法
- register_meta関数によるキーの事前登録
- 入力フォームの準備
8.4 タクソノミー
- タクソノミーの構造
- タクソノミーの主なAPI
- タクソノミーの登録
8.5 コメント
- コメントの主なAPI
- WP_Comment_Queryクラス
- コメント版カスタムフィールド
- コメント版カスタムフィールドとは
- コメント版カスタムフィールドの主なAPI
- レーティング機能の実装
- コメント機能の強制オフ
8.6 まとめ
第9章 投稿データの検索・取得
9.1 WP_Query ──WordPressの心臓部──
- WP_Queryとは
- WP_Queryの役割
- クエリフラグの保持
- クエリビルダ
- オブジェクトマッピング
- イテレータ
- 先頭固定(スティッキー)投稿の取得
9.2 基本的な使い方
- WP_Queryによる投稿データの取得
- 投稿データの表示
- サブループ作成を目的としたインスタンス生成
9.3 パラメーター
- 投稿者
- カテゴリ
- タグ
- タクソノミー ──Tax Query──
- キーワード検索
- 投稿・ページ
- パスワード
- 投稿タイプ
- post_typeパラメーターが取れる値
- 投稿ステータス
- post_statusパラメーターが取れる値
- 日付 ──Date Query──
- 日付指定による投稿の取得
- 複数条件を指定した投稿の取得
- カスタムフィールド ──Meta Query──
- 詳細な条件を指定した投稿の取得
- 特定のキーのカスタムフィールドで特定の数値以上の値を含む投稿の取得
- 特定のキーのカスタムフィールドに値が存在しない投稿の取得
- カスタムフィールドに関する複数条件を指定した投稿の取得
- 並び替え
- orderbyに使えるパラメーター
- カスタムフィールドの値を複数指定したソート
- ページ送り
- 返り値
- get_posts()関数でどのようなパラメーターが付加されているか
- get_posts()関数を使用する場合の注意
9.4 その他のプロパティとメソッド
- クエリ変数の取得
- クエリフラグの取得
- ページ送り関連情報の取得
- クエリドオブジェクトの取得
9.5 メインクエリ中のWP_Queryに対して行える操作
- pre_get_postsアクション
9.6 クエリビルディングへの介入
- JOIN句に対するフィルター
- WHERE句に対するフィルター
- キーワード検索部分に限定したWHERE句に対するフィルター
- ORDERBY句に対するフィルター
- GROUPBY句に対するフィルター
- DISTINCT句に対するフィルター
- LIMIT句に対するフィルター
- SELECT句に対するフィルター
- 各SQL文をまとめたフィルター
- SQL文全体に対するフィルター
9.7 まとめ
第10章 ユーザーと権限
10.1 ユーザーと権限の仕組み
- ユーザーと権限を制御するAPI
- デフォルトの権限グループ
10.2 ユーザー操作に関するAPI
- 基本的なデータ構造
- ログインユーザーの情報
- ユーザーの検索
10.3 ロールや権限の追加とカスタマイズ
- WP_Rolesクラス ──権限グループのカスタマイズ──
- WP_Userクラス ──ユーザ権限のカスタマイズ──
- 独自権限の追加
10.4 権限のチェック手法
- インストール権限のチェック
- 独自権限のチェック
10.5 まとめ
第11章 管理画面のカスタマイズ
11.1 メニューのカスタマイズ
- メニューの定義
- メニューの追加
- トップメニューへの追加
- サブメニューへの追加
- メニューを隠す
- トップメニューを隠す
- サブメニューを隠す
- 並び替え
- メニュー名の変更
11.2 Settings API ──独自の設定画面の作成──
- Settings APIとは
- 設定ページのUI生成
11.3 投稿データ一覧ページに独自項目の追加
- 独自フォームの作成項目を追加するためのフック
- 独自項目の実装
11.4 カスタムフィールドの入力フォーム作成
- 管理画面の標準フォーム
- プラグインの利用
- 独自フォームの作成
- 【コラム】is_admin()関数とadmin_initアクションの危険性
11.5 まとめ
第12章 その他の機能やAPI
12.1 wpdbクラス ──データアクセスのためのDAO──
- $wpdbオブジェクトとは
- 現在のテーブル名の取得
- SQLの実行
- $wpdb->query()とクエリのログ
- $output引数による結果のデータ形式の指定
- SQLの準備と値のサニタイズ
- 挿入・更新・削除のユーティリティメソッド
- $format・$where_format引数によるデータ型の指定
- クエリやその結果の情報の確認
- 独自テーブルの作成と更新
12.2 バリデーション・ナンス・サニタイズ
- バリデーション ──入力値の検証──
- バリデーションの関数
- エラーの出力
- ナンス ──リクエスト正当性の検証──
- サニタイズ ──データの無害化──
- 入力値のサニタイズ
- 【コラム】入力値のサニタイズはどこまで行うべきか?
- 出力値のサニタイズ
- 【コラム】WordPressの強制マジッククオート
12.3 オプションAPI
- オプションの追加
- オプションの取得
- オプションの更新
- オプションの削除
- オプションAPIの記述
- キーの衝突
12.4 JavaScriptやCSSの管理
- JavaScriptの管理
- JavaScriptの追加と依存性の解決
- 登録したJavaScriptを必要なときのみ出力
- PHPからJavaScriptへのデータ引き渡し
- 登録済みスクリプトの変更
- CSSの管理
- ページへのCSSの直接出力
12.5 キャッシュ ──一定期間のデータ保持──
- Object Cache API ──インメモリのキャッシュ──
- Transients API ──有効期限付きのキャッシュ機能──
12.6 ショートコード ──動的な出力を得る──
- 一覧を表示するショートコード
- 範囲を囲うショートコード
12.7 ウィジェット ──追加機能の実装──
- ウィジェットエリアの登録
- ウィジェットの作成
12.8 マルチサイト ──複数サイトの作成──
- マルチサイトとは
- ネットワークの設置
- ネットワークの運用設定
- サイトの追加
- ネットワークの構造
- ネットワークの基本的な扱い方
- 【コラム】マルチサイト特有の関数
- 【コラム】マルチサイト導入の是非
12.9 WP REST API ──RESTfulなWebサイトの実現──
- WP REST APIとは
- APIへのアクセス
- 認証
- リソースの種類
- エンドポイントの追加
12.10 国際化
- 関連ツール
- 環境の準備
- ソースコードの国際化
- テキストドメイン
- .potファイルの生成
- .poファイルの翻訳
- .moファイルのコンパイル
- .moファイルの読み込み
12.11 自動アップデート
- コアのアップデートのポリシー設定
- コア自動アップデートのレポートメール送信
- テーマ・プラグイン・言語ファイルの自動アップデート
- すべての自動アップデートの無効化
12.12 メールの送信
- From,Ccの指定
- ファイルの添付
- HTMLメールの送信
- 外部SMTPサーバーの利用