n-wp.ru — блог о WordPress
После обновления WordPress до версии 3.4 на главной странице не отображаются миниатюры постов - описание проблемы и ее решение | n-wp.ru

После обновления WordPress до версии 3.4 на главной странице не отображаются миниатюры постов — описание проблемы и ее решение

Обновление WordPress до версии 3.4 выявило одну ошибку, которая скрывается в базе данных — после обновления перестали отображаться миниатюры постов. Описываю способ исправления этого бага с помощью специального скрипта.

В одном из блогов после обновления WordPress до версии 3.4 я столкнулся с одной проблемой — на главной странице перестали отображаться миниатюры постов. Этот баг был характерен не для всех постов, и я не наблюдал его в других блогах, так что для установки причины мне пришлось перелопатить много информации. Тем не менее проблема была полностью решена.

После обновления WordPress до версии 3.4 на главной странице не отображаются миниатюры постов - описание проблемы и ее решение

Миниатюры постов на главной странице выводятся стандартной функцией:

Изучив информацию об обновленных файлах движка, которую предоставляют разные источники, выяснил, что виноваты в том, что миниатюры не отображаются, метаданные об ID изображений, используемых в качестве миниатюр поста, которые записываются в базу данных:

Что-то в новой версии WordPress не срастается с этими мета-данными, в итоге некоторые миниатюры не отображаются. Выход тут один — удалять эти метаданные в базе данных, и создавать их заново, в уже обновленной версии. Понятно, что работа эта не тривиальная, и требует достаточных знаний, опыта, и главное — прямых рук. Не имея ничего из перечисленного, да желания делать это все вручную, я стал искать автоматический вариант решения проблемы, который и был найден в посте Нейла Петерсона. Рассказываю, что нужно сделать, если вы столкнулись с такой же проблемой.

Сделайте бэкап базы данных.

Создайте файл imagefix.php, и впишите в него следующий код:

Перепишите этот файл в корневую папку вашего блога (там, где находится файл wp-load.php) и запустите его в браузере, введя адрес

Дождитесь окончания работы скрипта из этого файла, о чем будет свидетельствовать надпись done! После этого удалите файл imagefix.php с сайта.

Что делает скрипт в файле imagefix.php? Он исправляет метаданные о миниатюрах постов в базе данных, делая их совместимыми с новой версией WordPress 3.4.

tiaurus

Являюсь создателем n-wp.ru — блога о WordPress для новичков. Мне интересно многое, поэтому еще я сделал 123-box.ru — блог о программах для Windows, и tiaurus.info — блог о красоте.

9 комментариев

  • Предполагаю, что на блоге был установлен плагин 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 принцип немного другой: он не скачивает изображения с других сайтов, а использует уже загруженные и прикреплённые к записи. К подобной проблеме он бы вряд ли привёл — видимо, причина в другом.

        Насколько я вижу, на knitly.com всё же установлен Auto Post Thumbnail. Это точно не тот блог? :)

        • Auto Post Thumbnail я установил после обновления — думал, он поможет решить проблему. Не помог даже после его обновления, а вот отдельный скрипт помог.

          • Понятно. Меня интересовала причина явления с точки зрения других потенциальных проблем — жаль, что узнать удалось лишь приблизительно.

  • Пробовал ваш метод. Не работает. Проблема в теме. Где копать не знаю. Жаль, хорошая тема для фото.

  • TIAURUS спасибо Вам за пост, я везде ищу решение этой проблемы, и только у Вас нашла хоть что-то!
    После выполненных действий — результата я не увидела…
    Но вот вопрос уже при загрузке страницы со скриптом у меня сразу же написано: working… done!
    я немного удивленна, он работает или нет? Простите, но я не сильна в php
    А Вы не знаете еще решений?
    Вообщем то у меня возникла проблема и я ее описала тут, может подскажите? :) а то я уже не знаю что и делать…
    вот ссылка:

/* ]]> */