この記事は最後に更新してから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_ssl(2022年7月2日 更新)

bool is_ssl( )
リクエストがSSLかどうか調べる。

comments_template(2018年5月27日 更新)

void comments_template( string $file = '/comments.php' , bool $separate_comments = false )
投稿ページ(post)または単一ページ(page)のコメント情報を取得し、コメント表示・投稿用のテンプレートファイルを読み込んで表示する。

wp_list_pages(2015年4月28日 更新)

string wp_list_pages( [ mixed $args = '' ] )
固定ページを一覧表示する。

get_post_mime_type(2014年11月16日 更新)

mixed get_post_mime_type( [ mixed $ID = '' ] )
添付ファイルのMIMEタイプを取得する。

wp_lostpassword_url(2018年5月27日 更新)

string wp_lostpassword_url( [ string $redirect = '' ] )
パスワードリマインドURLを取得する。パスワードリマインドURLは、ログインページで「パスワードをお忘れですか?」のリンクとして使用されている。