delete_post_meta()


WordPress関数delete_post_meta()は、指定された投稿のカスタムフィールド(メタデータ)を削除するために使用されます。

構文

delete_post_meta( int|WP_Post $post_id, string $meta_key, mixed $meta_value = '' );

引数の説明:

  • $post_id (int|WP_Post) — 投稿のIDまたはWP_Postオブジェクト。
  • $meta_key (string) — 削除したいメタデータのキー名。
  • $meta_value (mixed) — (オプション)指定した場合、キーと値の一致するメタデータのみが削除されます。

例1: 投稿から特定のメタデータを削除する

投稿IDからcustom_fieldというキーのメタデータを削除します。

<?php delete_post_meta( get_the_ID(), 'custom_field' ); ?>

例2: 値を指定して特定のメタデータを削除する

'my_key'というキーと、値が'my_value'に一致するメタデータを削除します。

<?php delete_post_meta( get_the_ID(), 'my_key', 'my_value' ); ?>

例3: ループ内で複数の投稿のメタデータを削除する

投稿ループ内で、全ての投稿からsample_fieldのメタデータを削除します。

<?php 
if ( have_posts() ) {
    while ( have_posts() ) {
        the_post();
        delete_post_meta( get_the_ID(), 'sample_field' );
    }
}
?>

例4: 条件付きでメタデータを削除する

メタデータの値が100の場合のみ削除します。

<?php 
if ( get_post_meta( get_the_ID(), 'score', true ) == 100 ) {
    delete_post_meta( get_the_ID(), 'score' );
}
?>

例5: カスタム投稿タイプからメタデータを削除する

'product'カスタム投稿タイプの投稿から'price'メタデータを削除します。

<?php 
$args = array( 'post_type' => 'product', 'posts_per_page' => -1 );
$query = new WP_Query( $args );

if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        delete_post_meta( get_the_ID(), 'price' );
    }
}
wp_reset_postdata();
?>

注意事項

  • 指定した$post_idが存在しない場合、関数は何も行いません。
  • $meta_valueを指定しない場合、$meta_keyに一致する全てのメタデータが削除されます。

関連機能: