Как навсегда удалить запись мета-записи поста?


Delete_post_meta, похоже, просто удаляет значение для данного мета-ключа post. На самом деле это не полностью удаляет строку. Я много копал, но, похоже, не могу найти ни одной функции, которая полностью удаляла бы мета-запись post.

Пожалуйста, кто-нибудь может указать мне правильное направление? Должен ли я использовать $wpdb для полного удаления строки или для этого есть скрытая функция?

Редактировать:

В следующее было протестировано, и оно работает, но оно использует $wpdb. Правильно ли это делать?

$wpdb->delete( $wpdb->postmeta, array( 'post_id' => 744, 'meta_key' => 'referrers' ), array( '%d', '%s' ) );

Правка2:

Вот мой старый код:

// $post_id contains an integer value
// $referrers contains an array
$referrers = get_post_meta( $post_id, 'referrers', true );
for ( $i = 0; $i < count( $referrers ); $i++ ) {
    delete_post_meta( $post_id, "referrers_{$i}_contact_id" );
    delete_post_meta( $post_id, "_referrers_{$i}_contact_id" );
    delete_post_meta( $post_id, "referrers_{$i}_rule" );
    delete_post_meta( $post_id, "_referrers_{$i}_rule" );
    delete_post_meta( $post_id, "referrers_{$i}_amount" );
    delete_post_meta( $post_id, "_referrers_{$i}_amount" );
}

Вышесказанное работает, но оно просто очищает значения. Я использую это неправильно? Я что-то случайно пропустил?

Author: adamj, 2015-11-05

1 answers

delete_post_meta will удалите мета-строку. delete_post_meta также использует wpdb класс для удаления мета-строк. Можете ли вы показать нам полный код?

Для вашей информации delete_post_meta выполняет следующую команду mysql

DELETE FROM wp_postmeta WHERE meta_id IN( "85" );

Через функцию delete_metadata. meta_id 85 приведен только для примера. Это динамично. таким образом, вам не нужно запускать собственные запросы mysql, чтобы избежать ошибок и угроз безопасности.

ПРИМЕЧАНИЕ: У меня недостаточно репутации, чтобы комментировать, поэтому я даю это сообщение в качестве ответа.

 3
Author: WPTC-Troop, 2015-11-05 02:48:34