В процессе преобразования блога из Blogger в WP и запуска скрипта для захвата изображений с горячей ссылкой для хостинга я получил несколько забавных имен изображений, таких как
act% 252Bapandas-210x290.png
Эти имена изображений не позволяют отображать изображение на веб-странице из-за того, что кодировка URL заканчивается в самом имени файла (не спрашивайте!).Я переименовал их на файловом сервере, без сомнения, но имена также есть в метаданных вложения для каждого сообщения.
Как я могу удалить "%" из всех ссылок на изображения в таблице wp_postmeta
?Большинство из них встречаются в сериализованных массивах в meta_value
s для meta_key
s _wp_attachment_metadata
.Мне не повезло найти плагин, и я не уверен, как создать чистое SQL-решение.
РЕДАКТИРОВАТЬ:
Как сказали комментаторы, проблема заключается в том, что изменение или удаление символа "%" И обновление массива, чтобы он сообщал правильное количество символов (т. Е. S: 13 будет означать, что yoursite.com равен 13 символам []) Я такжеоткрыть для использования решения PHP !Что бы ни помогло мне исправить этот беспорядок.
ПОСЛЕДОВАТЕЛЬНОСТЬ И РЕШЕНИЕ
Я на самом деле не формулировал этот вопрос с точки зрения проблемы WordPress, я назвал его проблемой SQL,Я присудил свой ответ соответственно.Но я смог решить проблему изначально (с помощью Rarst @. Вот как я решил проблему, используя встроенные функции WordPress внутри цикла:
$posts = get_posts(array(
'post_type' => 'attachment',
'numberposts' => -1, ));
foreach( $posts as $post ) {
// retrieve data, unserialized automatically
$meta = get_post_meta($post->ID,'_wp_attachment_metadata', true);
// loop through array to do any search and replaces
// write it back
update_post_meta($post->ID, '_wp_attachment_metadata', $meta); }
Эти функцииавтоматически определять тип данных, которые вы извлекаете или записываете и (не) сериализуете их, если это необходимо. Это выполняется внутренним использованием функций Maybe_serialize () и Maybe_unserialize ().