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


お勧め

comment_text(2018年5月27日 更新)

void comment_text( )
現在のコメント文を表示する。

is_main_site(2018年5月27日 更新)

bool is_main_site( int $site_id = null )
サイトがメインサイトか調べる。

get_the_author_meta(2018年5月27日 更新)

string get_the_author_meta( [ string $field = '' [ , mixed $user_id = false ] ] )
投稿者情報を取得する。

single_cat_title(2018年5月27日 更新)

string single_cat_title( [ string $prefix = '' [ , bool $display = true ] ] )
アーカイブページのカテゴリー名を取得し、パラメータ$displayがtrueならば表示する。$displayがfalseの場合は、文字列として返す。

get_users(2017年11月27日 更新)

array get_users( [ array $args = array() ] )
ユーザー情報を取得する。