WordPress.org

Ready to get started?Download WordPress

Codex

Справочник по функциям/delete post meta

Contents

Описание

Эта функция удаляет все произвольные поля с указанным названием (или названием и значением) из указанной записи. См. также update_post_meta(), get_post_meta() и add_post_meta().

Использование

 <?php delete_post_meta($post_id$meta_key$meta_value); ?> 

Параметры

$post_id
(integer) (required) ID записи, у которой нужно удалить поля.
Default: None
$meta_key
(string) (required) Название поля, которое нужно удалить.
Default: None
$meta_value
(mixed) (optional) Значение поля, которое нужно удалить. Используется, чтобы различать несколько полей с одним названием, но разным значением. Если оставить пустым, будут удалены все поля с указанным названием.
Default: Empty

Возвращаемые значения

(boolean) 
False при неудаче. True при успехе.

Примеры

Стандартное применение

<?php delete_post_meta(76, 'my_key', 'Steve'); ?>

Другой пример

Предположим, что был установлен плагин, который добавил несколько значений произвольных полей для записи. После удаления плагина требуется удалить все значения произвольных полей, которые он добавил. Допустим, плагин добавил произвольные поля с названиями related_posts и post_inspiration.

Чтобы удалить все поля, нужно добавить это к функции деинсталяции:

<?php
  $allposts = get_posts('numberposts=-1&post_type=post&post_status=any');

  foreach( $allposts as $postinfo) {
    delete_post_meta($postinfo->ID, 'related_posts');
    delete_post_meta($postinfo->ID, 'post_inspiration');
  }
?>

Если нужно удалить все поля, кроме тех, в которых post_inspiration имеет значение "Sherlock Holmes", функция будет такой:

<?php
  $allposts = get_posts('numberposts=-1&post_type=post&post_status=any');

  foreach( $allposts as $postinfo) {
    delete_post_meta($postinfo->ID, 'related_posts');
    $inspiration = get_post_meta( $postinfo->ID, 'post_inspiration' );
    foreach( $inspiration as $value ) {
      if( $value != "Sherlock Holmes" )
        delete_post_meta($postinfo->ID, 'post_inspiration', $value);
    }
  }
?>

Если запись под номером 185 была удалена, и нужно удалить все поля related_posts, которые к ней относятся, можно использовать такую функцию:

<?php
  $allposts = get_posts('numberposts=-1&post_type=post&post_status=any');

  foreach( $allposts as $postinfo) {
    delete_post_meta($postinfo->ID, 'related_posts', '185');
  }
?>

Больше информации на странице post_meta Functions Examples.

Примечание: в отличае от update_post_meta(), эта функция позволяет удалить все поля, соответствующие критериям.

Схожее

Custom Fields: the_meta(), get_post_meta(), add_post_meta(), update_post_meta(), delete_post_meta(), get_post_custom(), get_post_custom_values(), get_post_custom_keys() (See Also: post_meta Function Examples)

See also index of Function Reference and index of Template Tags.