В одном из блогов после обновления WordPress до версии 3.4 я столкнулся с одной проблемой – на главной странице перестали отображаться миниатюры постов. Этот баг был характерен не для всех постов, и я не наблюдал его в других блогах, так что для установки причины мне пришлось перелопатить много информации. Тем не менее проблема была полностью решена.
Миниатюры постов на главной странице выводятся стандартной функцией:
</pre> <p>Изучив информацию об обновленных файлах движка, которую предоставляют разные источники, выяснил, что виноваты в том, что миниатюры не отображаются, метаданные об ID изображений, используемых в качестве миниатюр поста, которые записываются в базу данных:</p> <pre>meta_key = '_thumbnail_id'
Что-то в новой версии WordPress не срастается с этими мета-данными, в итоге некоторые миниатюры не отображаются. Выход тут один – удалять эти метаданные в базе данных, и создавать их заново, в уже обновленной версии. Понятно, что работа эта не тривиальная, и требует достаточных знаний, опыта, и главное – прямых рук. Не имея ничего из перечисленного, да желания делать это все вручную, я стал искать автоматический вариант решения проблемы, который и был найден в посте Нейла Петерсона. Рассказываю, что нужно сделать, если вы столкнулись с такой же проблемой.
Сделайте бэкап базы данных.
Создайте файл imagefix.php, и впишите в него следующий код:
get_results($sql); foreach ( $posts as $post ){ $sql = 'SELECT meta_id FROM `wp_postmeta` WHERE post_id = '.$post->meta_value.' AND meta_key = "_wp_attached_file"'; $check = $wpdb->get_results($sql); if(count($check)) continue; // We've already done this one... $sql = 'SELECT meta_key,meta_value FROM `wp_postmeta` WHERE post_id = '.$post->meta_value.' AND meta_key = "_wp_attachment_metadata"'; $thumb = $wpdb->get_results($sql); $data = unserialize($thumb[0]->meta_value); if(!isset($data['sizes']['thumbnail']['file'])) continue; $date = dirname($data['file']); $filename = $data['sizes']['thumbnail']['file']; $sql = 'INSERT INTO `wp_postmeta` SET post_id='.$post->meta_value.', meta_key="_wp_attached_file", meta_value="'.$date.'/'.$filename.'"'; $wpdb->query($sql); } echo 'done!'; ?>
Перепишите этот файл в корневую папку вашего блога (там, где находится файл wp-load.php) и запустите его в браузере, введя адрес
http://вашсайт.ru/imagefix.php
Дождитесь окончания работы скрипта из этого файла, о чем будет свидетельствовать надпись done! После этого удалите файл imagefix.php с сайта.
Что делает скрипт в файле imagefix.php? Он исправляет метаданные о миниатюрах постов в базе данных, делая их совместимыми с новой версией WordPress 3.4.

Предполагаю, что на блоге был установлен плагин Auto Post Thumbnail.
В его текущей версии (3.2.3) есть ошибка: у изображений, загруженных плагином, не хватает поля _wp_attached_file в таблице wp_postmeta.
Раньше это не имело значения, но теперь функция get_attached_file() возвращает только реально существующие файлы: http://core.trac.wordpress.org/changeset/20613
Предложенный в записи скрипт восстанавливает это поле для загруженных ранее файлов.
Чтобы исправить сам плагин, нужно найти в нём строку 353:
и заменить $file (эта переменная не определена) на $new_file.
Этот плагин установлен не был. Но до обновления однократно использовался другой плагин – Simple Auto Featured Image. Скорее всего принцип работы у этих плагинов схожий. Кстати, добрые люди уже исправили баг в Auto Post Thumbnail.
У Simple Auto Featured Image принцип немного другой: он не скачивает изображения с других сайтов, а использует уже загруженные и прикреплённые к записи. К подобной проблеме он бы вряд ли привёл — видимо, причина в другом.
Насколько я вижу, на knitly.com всё же установлен Auto Post Thumbnail. Это точно не тот блог? :)
Auto Post Thumbnail я установил после обновления – думал, он поможет решить проблему. Не помог даже после его обновления, а вот отдельный скрипт помог.
Понятно. Меня интересовала причина явления с точки зрения других потенциальных проблем — жаль, что узнать удалось лишь приблизительно.
Пробовал ваш метод. Не работает. Проблема в теме. Где копать не знаю. Жаль, хорошая тема для фото.
А как вы определили, что проблема именно в теме? В другой теме миниатюры отображаются?
TIAURUS спасибо Вам за пост, я везде ищу решение этой проблемы, и только у Вас нашла хоть что-то!
После выполненных действий – результата я не увидела…
Но вот вопрос уже при загрузке страницы со скриптом у меня сразу же написано: working… done!
я немного удивленна, он работает или нет? Простите, но я не сильна в php
А Вы не знаете еще решений?
Вообщем то у меня возникла проблема и я ее описала тут, может подскажите? :) а то я уже не знаю что и делать…
вот ссылка:
прошу прощения вот ссылочка: http://ru.forums.wordpress.org/topic/%D0%9D%D0%B5-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D1%8F%D1%82%D1%81%D1%8F-%D0%BC%D0%B8%D0%BD%D0%B8%D0%B0%D1%82%D1%8E%D1%80%D1%8B-%D0%BD%D0%B0-%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%BE%D0%B9-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B0-%D0%BF%D1%80%D0%B8-%D0%B7%D0%B0%D0%B3?replies=3