WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

Как заменить названия и значения метаполей в базе данных WordPress?

Всем привет!

Подскажите пожалуйста каким запросом я могу изменить значение всех произвольных полей записи с указанным значением?

А также, нужен запрос, чтобы изменить все названия ключей произвольного поля на указанный, т.е. нужно заменить само название произвольного поля у всех записей.

Приведу пример того, что нужно.

У записей есть метаполе wc_product_type и в этих полях несколько значений: blue, red, green и т.д. Так вот мне нужно изменить во всех записях, само название метаполя на product_type, а также изменить все значения red на none.

Спасибо!

1
Гость
7.9 лет назад
  • 1
    Kama9618

    В файле темы вызовите один раз следующий код.

    Для этого вставьте код в functions.php темы и обновите страницу сайта. В результате в браузере, вы увидите сколько строк было изменено.

    Далее, удалите код из functions.php или если не хотите удалять, потому что может еще пригодиться, просто замените if(1) на if(0):

    // Замена названий и значений всех произвольных полей у записей любого типа. Для WordPress
    if(1){
    	$meta_key_from = 'wc_product_type'; // заменять ключ с какого
    	$meta_key_to   = 'product_type'; // заменять ключ на какой
    
    	$meta_val_from = 'red'; // заменять значение с какого
    	$meta_val_to   = 'none'; // заменять значение на какое
    
    	// поехали!
    	global $wpdb;
    
    	$count = 0; // счетчик
    
    	// заменяем ключи
    	if( $meta_key_from && $meta_key_to )
    		$count += $wpdb->query( $wpdb->prepare("UPDATE $wpdb->postmeta SET meta_key = %s WHERE meta_key = %s", $meta_key_to, $meta_key_from ) );
    
    	// заменяем значения
    	if( $meta_val_from && $meta_val_to )
    		$count += $wpdb->query( $wpdb->prepare("UPDATE $wpdb->postmeta SET meta_value = %s WHERE meta_value = %s", $meta_val_to, $meta_val_from ) );
    
    	die('При замене названий и значений метаполей было обработано строк: '. $count );
    }
    
    campusboy 7.9 лет назад

    Разве можно в прямых конструкция (не функциях) писать die? Он вроде остановит выполнение дальнейших скриптов.

    Kama 7.9 лет назад

    На это и рассчитано! Чтобы этот код не оставляли, а то заменил и забыл про код, а он вечно работает и ищи потом причину тормозов...

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация