概要
delete_post_meta
関数は、WordPressのカスタムフィールドに関連する情報を削除するために使用されます。この関数は、特定の投稿IDに関連付けられたカスタムフィールドデータを削除するため、プロジェクトにおいてさまざまな用途に活用されます。具体的には、以下のようなシナリオでよく使われます。
- 投稿やページの不要なカスタムフィールドを整理する際。
- 特定の条件に基づいて特定のカスタムデータを削除する際。
- 提供する情報の整合性を保つために不正なカスタムデータを排除する際。
- カスタムやプラグインの更新を行う際に、古いフィールドをクリーンアップする際。
- データベースのサイズを縮小するためのメンテナンス作業として。
- 投稿の更新後に、不要になったメタデータを削除する際。
- 特定のユーザーや条件に基づくコンテンツのカスタマイズを行う際。
- プラグイン開発において、異なる状態の投稿を整える際。
構文
delete_post_meta( int $post_id, string $meta_key, mixed $meta_value = '' );
パラメータ
- $post_id (int): 投稿のID。
- $meta_key (string): 削除するメタデータのキー。
- $meta_value (mixed): (オプション)削除するメタデータの値。この値が指定された場合、該当する値に関連するメタデータのみが削除されます。
戻り値
- (bool): 成功した場合はtrue、失敗した場合はfalseを返します。
関連する関数
使用可能なバージョン
- この関数はWordPress 2.9以降で使用可能です。
コアファイルのパス
wp-includes/meta.php
この関数のアクションでの使用可能性
アクション | 使用の有無 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | |
register_sidebar | |
wp_loaded | |
send_headers | |
parse_query | |
pre_get_posts | |
wp | |
template_redirect | |
get_header | |
wp_head |
サンプルコード
サンプルコード1: 簡単なカスタムフィールドの削除
$post_id = 123; // 投稿ID
$meta_key = 'custom_field'; // 削除するメタキー
delete_post_meta($post_id, $meta_key);
このコードは、指定した投稿IDに関連するカスタムフィールドを削除します。
サンプルコード2: 特定の値を持つカスタムフィールドを削除
$post_id = 456; // 投稿ID
$meta_key = 'custom_field'; // メタキー
$meta_value = 'value_to_delete'; // 削除する値
delete_post_meta($post_id, $meta_key, $meta_value);
このコードは、指定した投稿IDのカスタムフィールドから特定の値を持つメタデータを削除します。
サンプルコード3: すべてのカスタムフィールドの削除
$post_id = 789; // 投稿ID
// すべてのカスタムフィールドを取得
$meta_data = get_post_meta($post_id);
foreach($meta_data as $meta_key => $values) {
delete_post_meta($post_id, $meta_key);
}
このコードは、特定の投稿からすべてのカスタムフィールドを削除します。
サンプルコード4: 条件付きでカスタムフィールドを削除
$post_id = 1011; // 投稿ID
$meta_key = 'status'; // メタキー
$status = get_post_meta($post_id, $meta_key, true);
// 状態が特定の値の場合のみ削除
if ($status === 'archived') {
delete_post_meta($post_id, $meta_key);
}
このコードは、カスタムフィールドの値が「archived」の場合にだけ、そのフィールドを削除します。
サンプルコード5: 投稿が削除された時に自動でカスタムフィールドを削除
add_action('before_delete_post', 'delete_related_meta');
function delete_related_meta($post_id) {
delete_post_meta($post_id, 'related_field');
}
このコードは、投稿が削除される前に、関連するカスタムフィールドを自動で削除します。