delete_post_meta() WP 1.5.0

Видалять усі довільні поля (метаполя) із зазначеним ключем у зазначеного запису (поста).

Використовуйте delete_post_meta_by_key() , щоб видалити мета-поля за ключом у всіх постів.

Працює на основі:
delete_metadata()

Хуків немає.

Повертає

true|false. true при успішному видаленні, false в іншому випадку.

Використання

delete_post_meta($post_id, $key, $value);
$post_id
(число) (обов’язковий)
ID посту, довільні поля якого потрібно видалити.
$key
(рядок) (обов’язковий)
Ключ довільного поля, яке потрібно видалити.
$value
(рядок)
Значення довільного поля, яке потрібно видалити. Вказівка ​​цього параметра може стати в нагоді, коли пост має кілька довільних полів з однаковими ключами. Якщо залишити поле порожнім, всі довільні поля з вказаним ключем будуть видалені.


За замовчуванням: ”

Приклади

0

#1 Демонстрація видалення метаполів

// видалимо всі довільні поля з ключем `my_key`, біля посту 76
delete_post_meta(76, 'my_key');

// видалимо всі довільні поля `my_key` зі значенням `Steve`:
delete_post_meta(76, 'my_key', 'Steve');
0

#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');
}
0

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

#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);
0

#5 Інші приклади

Ще приклади дивіться тут .

список змін

З версії 1.5.0Введено.

Код 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 );
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *