WordPressのカスタマイズやテーマファイル、プラグインの作り方などデータベース構造から詳しく解説します。

WordPressでmetadata(メタデータ)の追加・削除・更新

metadataとは何か

メタデータ(metadata)とはあるデータがもつ付加的なデータのこと。あるデータに対して紐づけるデータです。
(例)
投稿 → アイキャッチ画像、投稿日、タイトル
ユーザー → ユーザー名、メールアドレス、電話番号

これらのメタデータを投稿やコメントなどのデータと関連づけるためのAPIがmetadata APIだ。
Matadata APIとは、投稿やコメント、ユーザーといったオブジェクトに対してKeyとValueの形式で保存したり値を取得することができる。
(**投稿にあるカスタムフィールドもmetadata APIが使われている)

metadataの設定には主に3種類のデータがある

WordPressでは次の3種類のデータに対してメタデータを設定することができる。
①ユーザー
②投稿ページ、固定ページ、カスタム投稿タイプ
③コメント

Metadata APIには3種類のデータごとに関数がある

user_meta

add_user_meta()e
update_user_meta()
get_user_meta()
delete_user_meta()

post_meta

add_post_meta()
update_post_meta()
get_post_meta()
delete_post_meta()

comment_meta

add_comment_meta()
update_comment_meta()
get_comment_meta()
delete_comment_meta

補足
add_*** → 追加
update_*** → 更新
get_*** → 取得
delete_*** → 削除

(基本的にuser、post、commentが異なるだけで使い方は同じである)

メタデータを取得

$meta_values = get_post_meta( $post_id, $meta_key, $single );</code>

// $meta_values → メタデータの値(取得したい値)
// $post_id → 記事ID
// $meta_key → メタデータのキー
// $single → true または falseで記載する(true: 単独の値を返す、false: 配列で返す、デフォルトはfalse)

記事IDが20の投稿からdrinkというキーの値(コーラ)を取り出す。

$meta_value = get_post_meta( 20, ’drink’, true );
// => “コーラ"

メタデータを更新

update_post_meta( $post_id, $meta_key, $new_meta_value );
// $new_meta_value → 更新したい値

記事IDが20の投稿のdrinkというキーに値(コーラ)に書き換える。

update_post_meta( 20, drink, “コーラ" );

メタデータを追加

add_post_meta( $post_id, $meta_key, $meta_value, $unique );
// $unique → オリジナルなものか否か( true または falseで記載、デフォルトはfalse )

記事IDが20の投稿にdrinkというキーにコーラとサイダーの値を紐づけたデータを追加する。

add_post_meta( 20, drink, “コーラ”, false );
add_post_meta( 20, drink, “サイダー”, false );
// add_post_meta( $post )
// array(2) { [0] => string(6) “コーラ"
           [1] => string(8) “サイダー” }
// (*trueをセットするとサイダーの値は追加されない)

メタデータを削除

delete_post_meta( $post_id, $meta_key, $meta_value );

記事IDが20の投稿のdrinkキーのコーラ(値)を削除する

delete_post_meta( 20, drink, “コーラ” );

Metadataの注意事項

大規模サイトでMetadetaを使用する場合はデータベースのパフォーマンスを意識しなければならない。
get_posts()関数に代表されるWP_Queryを使用すると、MySQLデータベースに大きな負荷を与えることがある。
meta_keyやmeta_queryを使ったクエリでは、WordPressはMySQLのデータベースのインデックスを使用しない。

インデックスが使用されないと、記事数の増加に比例してWordPressのパフォーマンスが低下していくので、別途メタテーブル用のテーブルを作成し、適切にインデックスを設定したほうがよい。

まとめ

今回はmetadataについてまとめました。慣れてきたらMYSQLデータベースに負担をかけないよう意識した設計を目指してみましょう。

関連記事

ページ上部へ戻る