delete_post_meta()
Видалять усі довільні поля (метаполя) із зазначеним ключем у зазначеного запису (поста).
Використовуйте delete_post_meta_by_key() , щоб видалити мета-поля за ключом у всіх постів.
delete_metadata()
Хуків немає.
Повертає
true|false
. true при успішному видаленні, false в іншому випадку.
Використання
delete_post_meta($post_id, $key, $value);
-
$post_id
(число) (обов’язковий) - ID посту, довільні поля якого потрібно видалити.
-
$key
(рядок) (обов’язковий) - Ключ довільного поля, яке потрібно видалити.
-
$value
(рядок) -
Значення довільного поля, яке потрібно видалити. Вказівка цього параметра може стати в нагоді, коли пост має кілька довільних полів з однаковими ключами. Якщо залишити поле порожнім, всі довільні поля з вказаним ключем будуть видалені.
За замовчуванням: ”
Приклади
#1 Демонстрація видалення метаполів
// видалимо всі довільні поля з ключем `my_key`, біля посту 76
delete_post_meta(76, 'my_key');
// видалимо всі довільні поля `my_key` зі значенням `Steve`:
delete_post_meta(76, 'my_key', 'Steve');
#2 Видалення зазначених метаполів (довільних полів)
Припустимо, що ми використовували плагін, який додавав довільні поля до кожного посту, а тепер ми від цього плагіна відмовилися і нам потрібно видалити всі довільні поля, створені цим плагіном.
Плагін створював поля з ключами: keys related_posts
іpost_inspiration
Щоб видалити всі ці довільні поля, можна скористатися таким кодом:
$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');
}
#3 Видалення довільних полів з винятками
Допустимо, потрібно вдалися всі довільні поля post_inspiration , крім тих, значення яких дорівнює Sherlock Holmes , використовуємо такий код:
$allposts = get_posts( 'numberposts=-1&post_type=post&post_status=any' );
foreach( $allposts as $postinfo ) {
$inspiration = get_post_meta( $postinfo->ID, 'post_inspiration' );
foreach( $inspiration as $value ) {
if( $value != 'Sherlock Holmes' )
delete_post_meta($postinfo->ID, 'post_inspiration', $value);
}
}
#4 Приклад видалення всіх метаполів у певного посту
Варіант 1:
$post_id = 25;
foreach ( get_post_meta( $post_id ) as $key => $val ) {
delete_post_meta($post_id, $key);
}
Варіант 2 (швидше – одним запитом та без зайвих операцій):
$post_id = 25;
Global $wpdb;
$wpdb->delete( $wpdb->postmeta, [ 'post_id'=>$post_id ] );
clean_post_cache($post_id);
#5 Інші приклади
Ще приклади дивіться тут .
список змін
З версії 1.5.0 | Введено. |
Код delete_post_meta() delete post meta WP 6.0.2
function delete_post_meta( $post_id, $meta_key, $meta_value = '' ) {
// Make sure meta is deleted from the post, не from a revision.
$ the_post = wp_is_post_revision ($ post_id);
if ($ the_post) {
$post_id = $the_post;
}
return delete_metadata( 'post', $post_id, $meta_key, $meta_value );
}