この記事は最後に更新してから1年以上経過しています。

同じ名前のメタ情報をまとめて削除する

説明

WordPressには、投稿情報、コメント情報、ユーザ情報のそれぞれを拡張できるメタ情報の仕組みが用意されている。投稿情報のメタ情報は「カスタムフィールド」として投稿画面に用意されているので投稿者自身が随時操作できるほか、テーマやプラグインからの操作も容易である。今回の中身はそんなメタ情報の一括削除の話だ。

テーマやプラグインからカスタムフィールドを削除する場合は、 delete_post_meta関数を利用するが、一度に同じ名前のカスタムフィールドを削除する場合は delete_post_meta_by_key関数を利用できる。例えば、'pv'という名前のカスタムフィールドをすべて削除する場合は、次のようにすればいい。

delete_post_meta_by_key( 'pv' );

delete_post_meta_by_key関数の内部では、 delete_metadata関数を呼び出しているだけである。

return delete_metadata( 'post', null, $post_meta_key, '', true );

この呼び出しのポイントは第5パラメータがtrueを指定しているところ。このパラメータをtrueにすることで、第2パラメータの投稿IDは無視され、すべての投稿情報のカスタムフィールドを一度に削除することができる。

さてコメント情報やユーザ情報のメタ情報の削除には、今のところdelete_post_meta_by_key関数に相当する関数が用意されていない(たぶん)。これらのメタ情報を削除する場合は、次のようにdelete_metadata関数を利用することになる。

// コメント情報のメタ情報
delete_metadata( 'comment', null, $meta_key, '', true );

// ユーザ情報のメタ情報
delete_metadata( 'user', null, $meta_key, '', true );

テーマがプラグインで拡張したメタ情報を使わなくなった場合、そのまま放置するのは好ましくない。そんな使わなくなったメタ情報を、delete_post_meta_by_key関数やdelete_metadata関数を使ってまとめて削除するといいだろう。


最終更新 : 2014年03月21日 11:59


お勧め

is_email(2017年11月28日 更新)

mixed is_email( string $email [, bool $deprecated = false ] )
文字列がメールアドレス形式か調べる。

get_option(2019年11月14日 更新)

mixed get_option( string $setting [ , mixed $default = false ] )
パラメータ$settingで指定されたオプションの値を取得する。

has_filter(2018年5月27日 更新)

mixed has_filter( $tag, [ mixed $function_to_check = false ] )
WordPressタグにフィルターが登録されているか調べる。

make_clickable(2012年4月26日 更新)

string make_clickable( $text )
テキスト中のURLをリンクに変換する。

get_bookmark(2011年6月10日 更新)

mixed get_bookmark( mixed $bookmark [ , string $output = OBJECT [ , string $filter = 'raw' ] ] )
リンク情報を取得する。