この記事は最後に更新してから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


お勧め

utf8_uri_encode(2014年2月4日 更新)

string utf8_uri_encode( string $utf8_string [ , int $length = 0 ] )
文字列をURIエンコードする。

get_http_origin(2018年5月27日 更新)

string get_http_origin()
リクエスト元のオリジンを取得する。

tag_description(2012年1月16日 更新)

string tag_description( [ int $tag = 0 ] )
投稿タグの説明文を取得する。

is_user_admin(2011年6月23日 更新)

bool is_user_admin( )
リクエストページがユーザ管理者ページ(/wp-admin/user/内)か調べる。

get_tag_feed_link(2012年2月23日 更新)

string get_tag_feed_link( int $tag_id [ , string $feed = '' ] )
投稿タグフィードのURLを取得する。