WP: WordPress テンプレートについて

WordPress について隙間時間で勉強しているのだが,カスタマイズ手法についての書籍を読んでもピンとこなくて,とても苦労した.
振り返ってみると,WordPress で使用されている用語に関する知識がなかったと言うのが,大きい理由のように思う.

例えば,テンプレートという言葉はコンピュータ用語として広く使われているので,ある程度機能を想像することができるが,WordPress においてはどのようなものをテンプレートと呼び,テンプレートの実装はどのようにされているのか?なぜそのような構造になっているのか?がある程度分かってこないと,得た知識が身近に感じられなかったように思う.

といわけで,忘れないようにメモしておく.

- ページを構成するファイルを WordPress では,テンプレート ファイルと呼ぶ.
- それぞれのテンプレート ファイルをまとめて,1つのページを構成している.
- まとめているファイルは大抵 index.php で,他のテンプレート ファイルをインクルード タグで呼び出す.
- 複数のテンプレートで,テーマは構成されている.
- 用意されているテンプレートは,テーマにより異なる.
- テンプレートに記述されているテーマが用意するタグは, functions.php に実装されている.
- WordPress が用意するテンプレート タグは,wp-includes ディレクトリにある.
- テンプレートの適用には優先順位がある.(テンプレート階層を参照)
- スタイルは,style.css にある.

用語の大半がコンテンツ提供者への概念であって,カスタマイズを行うデベロッパへの概念ではないように感じられました.
PHP で書かれた関数なのにどういう違いがあるのか?理解するのに苦労したような気がします.

基本的に WordPress のカスタマイズとは,テーマ作成のことであって,システム改変ではないということも念頭に置いておく必要があると思います.
(私はよく分からなかったので,情報の整理が出来なかった…(>_<))

WP: formタグのaction属性がなかった件

WordPress 管理画面の「新規追加」ボタン押下時の処理について,コードを確認しました.

以下の赤枠のボタンです.

html では,以下のコードとなっています.

1
2
<a href="http://localhost:8888/wordpress/wp-admin/user-new.php" 
    class="page-title-action">新規追加</a>

早速,wp-admin/user-new.phpをみていきます.
新規ユーザーを追加する処理は,このファイルで処理されているようです.

次に,「新規ユーザーを追加」ボタン押下時に呼ばれる処理を探しました.

1
2
3
4
5
6
<input type="submit" 
    name="createuser" 
    id="createusersub"
    class="button button-primary" 
    value="新規ユーザーを追加" 
    kl_vkbd_parsed="true">

input が属する form の action 属性を参照すれば,呼ばれているコード ファイルが分かると思いましたが,action 属性を見つけることが出来ませんでした.

1
2
3
4
5
<form method="post" 
    name="createuser" 
    id="createuser" 
    class="validate" 
    novalidate="novalidate">

実際には,user-new.php 内の処理を参照すると「新規ユーザーを追加」ボタン押下時の処理も記載されているようですが,なぜこのファイルが呼ばれるのか?が分かりませんでした.

結局,HTML5 仕様をみて分かったのですが,

タグの action 属性が削除されている場合は,送信先はそのファイルとされるようです.

参考: 「action属性」で「送信先のURL」を指定しよう

HTML5 からの仕様として,action属性が必須でなくなった.
タグのaction属性が省略されている場合,送信先はそのHTMLファイル自身となる.

知らなかったので,メモしておきます.
これ知らないと分からないよなー

PHP: header() でリダイレクトさせている理由

先日からPHPを勉強しています.
PHPユーザ歴は長いのですがちゃんと体系立てて勉強してこなかったので,ここらで断片的な知識を体系立てて整理したいと思い,改めて勉強しています.
ですが,いざ始めてみると必要とされる知識の範囲がとても広く苦労しています.
html, css3, javascript, jquery, sass, php, wordpress, bootstrap4, cakephp など…

先日まで php でリダイレクトする場合に header() 関数を使用しますが,「なぜ header() を使用するのか?」と考えていました.
リダイレクトという単語ではなく,なぜ header っと考えていました.
HTTPヘッダ仕様については知っていましたが,理解が出来ていなかったわけです.

というわけで,改めて HTTP仕様をざっとチェックすることにしました.

参考: HTTP入門
参考: 【PHP】header()関数

これは時間かかるなー

p.s. wordpressコードをみていて,ルールがあるのか?知りませんが,コメント「// Main」以降に処理が記述されていることが多い思います.

PhpStorm で関数一覧を表示する

私が使用している PhpStorm は 2019.1 なのですが,関数一覧はどこから表示するのか分からなかったので,調べました.

以下の添付画像の赤枠をクリックすると Structure が表示され,参照できます.
大きめのファイルでもざーっとどのような関数が提供されているのか?確認できますね.

WP: 投稿を取得する処理を眺めてます

先日からざっと WordPress の投稿を表示する処理を眺めています.

規模が大きいのでまだ全然分かりませんが,フォルダ構成とか初歩的なPHPの記述だったり,記事を表示するまでのざっくりした処理の流れは少し親近感がでてきました.
エントリ ポイントから記事を表示するまでを簡単にまとめてみました.
これからは,関数などを詳細に調べていくのがいいのか?
ただ眺めているよりは,テーマを見つけてカスタマイズ作業を通して理解を深めた方がいいのか?と思案中です.
この作業は結構時間がかかるなぁー.
過去,数年で何度も忙しさを言い訳に挫折しているからなー

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// ▼index.php
require( dirname( __FILE__ ) . '/wp-blog-header.php' );
// 	▼wp-blog-header.php
	// 1. WordPress ライブラリのロード
		wp-config.php でデータベース設定,デバッグモードなど各種設定を読み込む
		wp-settings.php
	// 2. WordPress クエリのセットアップ
	wp();
		WordPressのオブジェクトを生成して,グローバル配列にセット
			$GLOBALS['wp_the_query'] = new WP_Query();
			$GLOBALS['wp'] = new WP();
// 		▼functions.php
		function wp( $query_vars = '' ) {
// 			▼class-wp.php
			public function main( $query_args = '' ) {
				$this->init();
				$this->parse_request( $query_args );
				$this->send_headers();
				$this->query_posts();
				$this->handle_404();
				$this->register_globals();
					query_vars property をグローバル配列にセットする
	// 3. テーマ テンプレートのロード
// 	▼template-loader.php
		require_once( ABSPATH . WPINC . '/template-loader.php' );

WP: WP_Query について

WordPress のコードをみていて,重要そうなクラスがあったので調べてみた.

The WordPress Query class.
WP_Queryとは,WordPress でブログの投稿やページの情報を取得する場合に使うクラス.とのこと.

どのような検索ができるのか?ざっと確認しておけばよいのでしょう.

参考: 関数リファレンス/WP Query
参考: いっつも忘れるWP_Queryの使用方法とパラメータ一覧。がっつり整理してみた
参考: WP_Queryの使い方をPHPコードにまとめた便利なコード・スニペット
参考: これは便利!WordPressのWP_Queryでよく使うコードスニペット

WP: テンプレートタグ

WordPress のテンプレートタグは,幾つかの種類があるようだったので,まとめた.

テンプレートタグファイルは wp-includes ディレクトリに格納されている.

インクルード タグ
インクルード タグは、あるテンプレートファイル(例えば index.php)の中で、他のテンプレートファイル(例えば header.php)の HTML や PHP を実行するために使う.

条件分岐タグ
条件分岐タグ (Conditional Tag) は、テンプレート ファイル内で表示される内容や、特定のページ内容を表示する条件を設定するのに使用する.
注: 条件分岐タグが使えるのは,WordPress の posts_selection アクションフックの後のみとのこと.

WP: マルチサイトとは?

コードをみていて,

is_multisite()

という処理があったので,調べてみました.

ざっくりまとめると,マルチサイトとは,1つの WordPress で複数の WordPress を運用できる機能らしいです.
導入にはメリット,デメリットがあるようです.
特に気になるのは,プラグインで未対応のものがあるとのこと.
何かしら理由のあるユーザ以外は,利用しない方が良い機能と感じますね.

参考: WordPressマルチサイトのメリット・デメリット・設定方法

Google Analytics の計測が出来ない場合に確認すること

先日より Google Analytics の計測が出来ていなかったので,原因を調べてみた.
結果,WordPress サイトのテーマを変更した際に,header.php の に Analytics のトラッキングコードを入れていなかったため,計測が出来ていなかったことが分かった.
早速,WordPress 管理画面より [外観] – [テーマエディター]を選択し,テーマヘッダー(header.php)のタグにトラッキングコードを直接追加した.
約1分ほどでリアルタイム計測が動作した.
WordPress サイトのテーマを変更した際には,忘れずに Analytics のトラッキングコードを追加しておかなくてはいけないですね.
でも,こういう作業って年に1回…って感じで忘れちゃうんだよなー

参考: Googleアナリティクス導入時の設定・設置方法【初心者向け】

WP: WordPress メモ

WordPress のコードをザーとみていて,固有の機能,単語など調べたのでメモしておきます.

パーマネントリンクとは

パーマリンクとは,Webページ毎に設定したURLのこと.
例えば,https://www.xxx.com/yyy/zzz/
というWebページのURLであれば,後半の/yyy/zzz/ がパーマリンク.

テンプレートタグ

テンプレートタグは,ブログのデータを動的に表示するため,テンプレートの中で使用するタグ.
参考: テンプレートタグ

.htaccess

wordpress の .htaccess は「存在しないファイルは全てアプリで処理する」設定になっているとのこと.

参考: .htaccessとは?
参考: .htaccess の書き方(リダイレクト編)

WordPress のコードをざっくりみる方法

参考: WordPressのコアファイルの仕組み。3ステップでざっくりまとめ。

ざーとファイルについては眺めたので,次はブログが表示されるフローをみていきたいと思います.

XML-RPC機能は、アプリなどを使ってリモートから投稿出来る機能

xml-rpc に関するファイルがあったので,WordPress ではどのような使われ方をしているのか調べた.

xmlrpc.phpは管理画面からではなく、他のプログラムやサイト外からワードプレスをコントロールするための様々な機能を提供しています。
例として下記のようなものがあります。

投稿をメールで作成
投稿を編集
投稿の削除
ファイルのアップロード
コメントの追加削除
コメントの編集
ピンバック(リンク元がリンク先に通知する機能です)

ピンバック

ピンバックを使用するつもりはないけど,よくまとめられていたのでメモ.
参考: ピンバックとは?正しい意味とWordPressに設定する方法