Как навсегда удалить запись мета-записи поста?
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" );
}
Вышесказанное работает, но оно просто очищает значения. Я использую это неправильно? Я что-то случайно пропустил?
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, чтобы избежать ошибок и угроз безопасности.
ПРИМЕЧАНИЕ: У меня недостаточно репутации, чтобы комментировать, поэтому я даю это сообщение в качестве ответа.