【WordPress授業三日目】PHPの基本,WP特有のルール
PHPの基本
サーバに入れたフォルダ「wp-content」以外はWardPress更新時に変更になる可能性があるので、基本いじっても更新されるので注意
WordPressでは連想配列をレコード取得の条件によく使う
部屋の名前が「条件名」
部屋の値が「条件に対する値」
'posts_per_page'は「何件分取得?」(データベースのLIMITと一緒)
'category_name'は「何カテゴリ?」
'orderby'は「並び替えどうする?」
●まとめ
変数argsには連想配列でレコード取得の条件を作成
get_postsはDBからページ情報を取得する関数
引数:連想配列で指定した条件
戻り値:DBから得たページ情報
●よく使うループ
WordPressの世界で「ループ」といった時は主にDBから取得したページ情報をページの数分繰返し処理することを言う
■ have_posts()
DBから取得したデータのポインタ位置にレコードがあるか真偽値を返す
戻り値:レコードがある「true」ない「false」
最後まで進んで「false」を返す際にポインタ位置を先頭に戻す
■ the_post()
ポインタ位置のレコード(ページ情報)をWordPressが用意している$postにセットする
ポインタ位置を次に移動
WordPress内で暗黙的に用意されている変数がいくつかあるので注意
例)$post等
■ オブジェクトとは
●1番目のコード
globalキーワード付きで変数名を指定するとその変数はグローバルスコープ(今回は関数外)にある変数を参照しにいくようになる
date関数:日付の書式を取得
Y:4桁年
m:2桁月
d:2桁日
2020年11月5日の場合は「'20201105'」
●2番目のコード
//プログラムの世界には値や処理をまとめて
//オブジェクトとして管理するという概念がある
//このオブジェクトをPHPで実装するときは「class」を利用する
//「class」キーワードを使ってクラスを作成
//クラス名は命名規則に則っていれば好きにつけてOK
//ただし暗黙ルールとしてクラス名は頭文字大文字
JSの場合
プロパティの参照
オブジェクト . プロパティ名
メソッドの呼び出し
オブジェクト . プロパティ名 ( )
PHPの場合
プロパティの参照
オブジェクト(クラス) -> プロパティ名
メソッドの呼び出し
オブジェクト(クラス) -> プロパティ名 ( )
■ PHPでオブジェクトを使用する方法
◇クラス(設計図)を作成
class クラス名(頭文字大文字) {
//スタティックプロパティ:アクセス修飾子 プロパティ名
public static $プロパティ名;
protected static $プロパティ名;
private static $プロパティ名;
//インスタンスプロパティ:アクセス修飾子 プロパティ名
public $プロパティ名;
protected $プロパティ名;
private $プロパティ名;
//スタティックメソッド:アクセス修飾子 メソッド定義
public static function メソッド名(引数) {
//メソッドの処理
return 戻り値;
}
//インスタンスメソッド:アクセス修飾子 メソッド定義
public function メソッド名(引数) {
//メソッドの処理
return 戻り値;
}
}
◇クラスを利用する場合はインスタンス化する
$変数 = new クラス名();
◇インスタンス内のプロパティ利用
(インスタンスプロパティ)
$変数(インスタンス)->プロパティ名;
◇インスタンス内のメソッド利用
(インスタンスメソッド)
$変数(インスタンス)->メソッド名(引数);
◇クラスのプロパティ
(スタティックプロパティ・静的プロパティ)を利用
クラス名::プロパティ名;
◇クラスのメソッド
(スタティックメソッド・静的メソッド)を利用
クラス名::メソッド名(引数);
オブジェクトからデータを取り出す
配列からデータを取り出す
型と変換
「(データ型)値」と記述することで明示的に型変換することができる
明示的変換を「キャスト」と呼ぶ
WordPress特有のルール
■ テンプレートタグとの違い
DBから必要な情報を取得して利用する
1.the_○○ ( )
・DBから値を取得して出力する
・
・echo不要
・サニタイズをして出力してくれている
2.get_the_○○ ( )
・DBから値を取得する
・生の値のみ取得
出力時はHTMLタグを自前で組む必要あり
ただしカスタマイズしやすい
・echoしないと出力されない
・出力時にサニタイズしなければいけない
●the_category()とget_the_category()の違い
the_category()の場合
↓この記述だけで下が出力される
get_the_category()の場合
↓この記述で出力される
array(1) {
[0]=>
object(WP_Term)#3804 (16) {
["term_id"]=>
int(1)
["name"]=>
string(9) "未分類"
////略
["cat_name"]=>
string(9) "未分類"
["category_nicename"]=>
string(13) "uncategorized"
["category_parent"]=>
int(0)
}
}