WordPress как на ладони

Как удалить все метаполя по указанному ключу из базы данных wordpress

У меня появились ненужные метаполя записей, хотелось бы их всех удалить из БД, но WordPress кажется такой возможности не дает.

Есть например функция delete_post_meta() но она удаляет метаполе только указанного поста, а мне нужно удалить абсолютно все произвольные поля всех записей из всей базы данных... Как это сделать запросом или может есть функция для этого?

Спасибо!

0
Инкогнито
6.1 год назад
  • 0
    Kama9616

    Для этого есть специальная функция delete_post_meta_by_key():

    delete_post_meta_by_key( 'key_name_to_delete' );

    Другие варианты это сделать:

    1) Или можно так:

    delete_metadata( 'post', $post_id, $meta_key, '', true );

    Аналогично, можно удалить все метаполя у всех: пользователей, элементов таксономий (терминов), комментариев:

    delete_metadata( 'user', $user_id, $meta_key, '', true );
    delete_metadata( 'term', $term_id, $meta_key, '', true );
    delete_metadata( 'comment', $comment_id, $meta_key, '', true );

    2) Код который удаляет указанное метаполе по ключу из всей базы данных, из таблицы метаданных записей:

    global $wpdb;
    
    $meta_key = 'pack_medium'; // название мета-ключа который будем удалять
    
    $deleted_rows = $wpdb->query( $wpdb->prepare(
    	"DELETE FROM $wpdb->postmeta WHERE meta_key = %s", $meta_key 
    ) );
    
    wp_cache_flush();
    
    echo $deleted_rows; //> 50
    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация