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 ); }