PHP(WordPress)

特徴

  • HTMLがPHPファイル内で書ける
  • <?php 処理 ?>これだけでコードが走る
  • <?php 〜処理 ?>はファイル内で何回も書ける、HTMLの途中で一行だけ書いてそれを複数書くとかもできる
  • 終わりの ?> の部分は省略できる
  • エントリーポイントがわかりにくい(PHPを扱う環境によって調べ方があるようだ。)
  • 動的型付け言語なので、変数の型を自由に変更できる

<?= ?>

<?= ?>は値をHTMLに出力する専用タグ(<?php echo ... ?>の短縮形)です。<?=は主にテンプレート表示で便利ですが、基本は<?phpを使い、HTML埋め込み時には<?=を使うのが一般的です。 

変数

  • 頭に【$】をつける。
  • 変数の型は推論型で型指定不要。
  • 予約語が使えるが非推奨。
  • floatはdoubleで返される。正確な型を知るには【var_dump(変数)】を使用する。
  • ブール型は true で 1 だが false は何も入らない。
  • 文字、文字列を扱う時はシングルコーテーションを使う。HTMLは普通にダブルコーテーション。
  • スコープ特殊で関数外変数は関数内と同じ変数名を使用しても別扱いとなる。関数外の変数を扱う場合 $変数 の前に global を付けて宣言し直す。例 global $変数;

スーパーグローバル変数

元々PHPで定義されている変数のこと、$GLOBALS以外は $_ から始まる。
PHP内のどこからでも呼べる

  • $GLOBALS
  • $_SERVER[]
  • $_GET[‘キー’]
  • $_POST[‘キー’]
  • $_FILES[‘キー’]
  • $_COOKIE[‘キー’]
  • $_SESSION[‘キー’]
  • $_ENV[‘キー’]
  • $_REQUEST[‘キー’]

$_SERVER

主な引用元https://qiita.com/With21/items/1c0520921d8729813473

  • $_SERVER[‘PHP_SELF’]
  • $_SERVER[‘GATEWAY_INTERFACE’]
  • $_SERVER[‘SERVER_ADDR’]
  • $_SERVER[‘SERVER_NAME’]
  • $_SERVER[‘SERVER_NAME’]
  • $_SERVER[‘SERVER_PROTOCOL’]
  • $_SERVER[‘REQUEST_METHOD’]
  • $_SERVER[‘REQUEST_TIME’]
  • $_SERVER[‘REQUEST_TIME_FLOAT’]
  • $_SERVER[‘QUERY_STRING’]
  • $_SERVER[‘DOCUMENT_ROOT’]
  • $_SERVER[‘HTTPS’]
  • $_SERVER[‘HTTP_ACCEPT’]
  • $_SERVER[‘HTTP_ACCEPT_CHARSET’]
  • $_SERVER[‘HTTP_ACCEPT_ENCODING’]
  • $_SERVER[‘HTTP_ACCEPT_LANGUAGE’]
  • $_SERVER[‘HTTP_CONNECTION’]
  • $_SERVER[‘HTTP_HOST’]
  • $_SERVER[‘HTTP_REFERER’]
  • $_SERVER[‘HTTP_USER_AGENT’]
  • $_SERVER[‘REMOTE_ADDR’]
  • $_SERVER[‘REMOTE_HOST’]
  • $_SERVER[‘REMOTE_PORT’]
  • $_SERVER[‘REMOTE_USER’]
  • $_SERVER[‘REDIRECT_REMOTE_USER’]
  • $_SERVER[‘SCRIPT_FILENAME’]
  • $_SERVER[‘SERVER_ADMIN’]
  • $_SERVER[‘SERVER_PORT’]
  • $_SERVER[‘SERVER_SIGNATURE’]
  • $_SERVER[‘PATH_TRANSLATED’]
  • $_SERVER[‘SCRIPT_NAME’]
  • $_SERVER[‘REQUEST_URI’]
  • $_SERVER[‘PHP_AUTH_DIGEST’]
  • $_SERVER[‘PHP_AUTH_USER’]
  • $_SERVER[‘PHP_AUTH_PW’]
  • $_SERVER[‘AUTH_TYPE’]
  • $_SERVER[‘PATH_INFO’]
  • $_SERVER[‘ORIG_PATH_INFO’]

ファイル関連

  • ABSPATH
  • __DIR__
  • require_once
  • wp_enqueue_script()
  • wp_enqueue_style()

データベース関連

$wpdb->get_charset_collate()

データベーステーブルを作成または更新する際に、WordPress環境(wp-config.phpで設定された文字セットと照合順序)と一致する文字セット(Character Set)と照合順序(Collation)を取得するためのメソッドです。

使用例
通常、dbDelta() 関数と一緒に使用します。 

戻り値の例
通常、DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci のような文字列が返されます。 

まとめ
プラグインやテーマ開発で独自のテーブル(CREATE TABLE)を作成する際は、必ずこの関数を使って文字セットを設定すべきです。特に多言語サイトや、日本語を扱う場合に重要です。

dbDelta()

dbDelta()関数は、SQLのCREATE TABLE文を元に、テーブルの新規作成や既存テーブルの構造更新(ALTER)を自動で行う強力な関数です。データや既存のカラムを維持しながら、プラグインのバージョンアップ等に合わせてデータベース構造を最新に保つ効果があります。 

主な効果と特徴:

  • 安全な構造更新: テーブルが存在しない場合は作成し、存在する場合はALTER TABLEを発行して差分を更新する。
  • バージョン対応: プラグイン有効化時やアップグレード時にスキーマを自動更新できる。
  • 制約: カラム定義は1行に1つずつ記述し、PRIMARY KEYの前後にはスペースが2つ必要など、厳密な書式が求められる。 

使用する際は、require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );で関数を読み込む必要があります。

⚠️注意

テーブル追加、変更した場合は一度:

  • プラグイン停止
  • プラグイン削除しないでOK
  • 再度有効化

してください。

そうすると新テーブルが作られます。

$wpdb->get_results()

データベースから複数行のデータを取得する際に使用されます。

1. 第一引数:$query(文字列 / 必須)

実行したい SQL文(SELECTクエリ) を指定します。
セキュリティ(SQLインジェクション対策)のため、外部からの入力値を含む場合は必ず $wpdb->prepare() でラップしたクエリを渡すのが推奨されます。

2. 第二引数:$output_type(定数 / 任意)

返り値の データ形式 を指定します。デフォルトは OBJECT です。

指定できる定数 説明データの取り出し方
OBJECT (初期値)数値添字配列の中に、各行がオブジェクトとして格納される$results[0]->column_name
ARRAY_A数値添字配列の中に、各行が連想配列(カラム名がキー)として格納される$results[0]['column_name']
ARRAY_N数値添字配列の中に、各行が数値添字配列として格納される$results[0][0]
OBJECT_K第一カラムの値をキーとした、行オブジェクトの連想配列を返す$results['key_value']->column_name

基本的な使い方の例

$wpdb->prepare() 

SQL文の中に変数を安全に埋め込むためのメソッドです。主な引数は、「SQLの雛形(クエリ)」「埋め込む値」の2つ(またはそれ以上)です。

1. 第一引数:$query(文字列) 

埋め込みたい場所に 「プレースホルダ」 と呼ばれる記号を置いたSQL文を指定します。

よく使われるプレースホルダ:

  • %d:整数(integer)
  • %s:文字列(string)
  • %f:浮動小数点数(float)
  • %i:テーブル名やカラム名(identifier) ※WP 6.1以降

2. 第二引数以降(または配列):$args

プレースホルダに当てはめる 「実際の値」 を指定します。

  • 個別指定(可変長引数): $wpdb->prepare($sql, $val1, $val2, ...) のように順に並べます。
  • 配列指定: $wpdb->prepare($sql, array($val1, $val2)) のように、値をひとまとめにした配列を渡すことも可能です。

具体的な使用例

プレースホルダを使うことで、WordPress Developer Resources で解説されている通り、クォート処理(' で囲むなど)が自動で行われ、SQLインジェクションを防ぐことができます。

注意点

  • クォートは不要: プレースホルダ自体を '(シングルクォート)で囲む必要はありません(例:WHERE name = %s でOK、'%s' とは書かない)。
  • % 記号の扱い: LIKE 検索などで % を文字として使いたい場合は、%% と重ねて記述するか、WordPressの公式ガイド にあるように値を渡す側で調整します。

データベースの注意点

user_id のようなカラム名は【insert()】等で %s で明示しないと数値扱いされて文字列を入れたときに 0 になる。

コメントアウト

C言語と同じ。
// 一行
/**/ 範囲

配列

連想配列の書き方

通常の配列の宣言に => を使うと左がキー、右が値の連想配列ができる。
PHPの配列は配列の中に配列を入れられるので連想配列を連結することができます。
主にJSON形式にする場合に使用する

演算子

演算子はC言語とほぼ同じ。
イコール3つ === は厳密等価演算子と呼ばれ、値と型の両方が一致しているかを比較する

if文の書き方

繰り返し処理

foreachはC言語とかと変数の配置が逆かつ as を表記

関数の書き方

デフォルト関数(getが付く物はHTML内で使う時はechoを頭につける)

  • echo
  • var_dump()
  • print_r()
  • echo_count()
  • var_export()
  • get_theme_file_url(‘テーマディレクトリからのパス’)
  • home_url(‘必要なファイルのパス’)
  • get_header() & get_footer
  • have_posts()
  • the_posts()
  • the_title()
  • the_date()
  • the_content()
  • the_permalink()
  • get_sideber()
  • is_admin()
  • is_main_query()
  • is_front_page()
  • is_home()
  • is_single()
  • is_singulare()
  • the_posts_pagination()
  • add_action()
  • add_filter()

API関連でよく使う関数

  • register_rest_route()
  • register_rest_field()
  • wp_send_json()
  • wp_remote_get() / wp_remote_post()
  • rest_ensure_response()
  • is_user_logged_in()
  • current_user_can()

クラス

変数や関数にアクセスするには -> を使う、その時変数の$が取れる。
public protected private 使用可能。

コロン構文

{}を使わない書き方 : と end~ に置き換える書き方。
これを使うと処理をまとめて書ける。

サブクエリ(任意のページのデータをDBから取得する)

アクションフック

特定の関数に処理を追加、または変更することができる
例:メインクエリで取ってくる最新の投稿10件分を特定の投稿タイプの時だけ9件に変更する
※functions_php に書く
API作成例

add_action() 主要な第一引数の一覧

サイトの読み込み・初期化関連

initWordPress本体の読み込みが完了した直後に実行。テーマやプラグインの初期設定で最も使われる。
after_setup_themeテーマのfunctions.phpが読み込まれた直後に実行。テーマサポートの設定に最適。
wp_loaded WordPressが完全に読み込まれた後に実行。

管理画面関連 (Administration)

admin_menu管理画面のメニューに項目を追加する時。
admin_init管理画面の各ページが表示される前に実行。
admin_enqueue_scripts管理画面のCSS/JSを読み込む時。

フロントエンド(テーマ)関連

wp_enqueue_scriptsテーマのフロントエンドでCSSやJSを読み込む(wp_enqueue_script)時に使用。
wp_head<head> タグの閉じる直前(wp_head()関数内)にコードを追加。
wp_footer</body> タグの直前(wp_footer()関数内)にコードを追加。
get_sidebarサイドバーを表示する前に実行。

コンテンツ・投稿関連

wp_insert_post投稿がデータベースに追加・更新された直後に実行。
publish_post投稿が公開された時。
save_post投稿が保存(新規・更新)された時に実行。
delete_post投稿が削除された時に実行。

コメント関連

comment_postコメントが投稿された直後に実行。
wp_set_comment_statusコメントのステータス(承認/スパムなど)が変更された時。

ユーザー関連

wp_loginユーザーがログインした時に実行。
wp_logoutユーザーがログアウトした時に実行。
user_register新しいユーザーが登録された時に実行。

add_action の基本構成

第一引数は上記の通り、do_action('タグ名')で定義されたフック名です。

xmlを扱う

準備として
file_get_contents()でxmlファイルを読み込み、
simplexml_load_string()でオブジェクト化する。
simplexml_load_file(‘ファイルパス’)でもok、これなら一行。
出来たオブジェクトからアロー演算子でアクセスする。

xpathが使用可能

要素にアクセスする場合に xpath で指定することができ、直接アクセス可能。

ただし xml に名前空間(xmlns属性)がある場合、SimpleXMLElementxpathはそのままでは要素を見つけられません。
xmlns= “~~” がある場合は registerXPathNamespace(‘変数’, ‘~~’) を使用してからパスの前に : を使って記述する。

json変換

その他

  • false は int にキャストすると 0 になる

コメント

タイトルとURLをコピーしました