mildfuzz
  • 0
Мастер

Можно ли обновлять миниатюры программно?

  • 0

Я хотел бы иметь возможность обновлять кеш эскизов программно, не знаю, где его подключить, но в настоящее время любые изменения дизайна означают повторную загрузку множества изображений!

Share
  1. Вы можете посмотреть на плагин Regenerate Thumbnails от Viper007Bond.

    В принципе, вот как это сделать:

    function regenerateThumbnails() {
    
        $images = $wpdb->get_results( "SELECT ID FROM $wpdb->posts WHERE post_type = 'attachment' AND post_mime_type LIKE 'image/%'" );
    
        foreach ( $images as $image ) {
            $id = $image->ID;
            $fullsizepath = get_attached_file( $id );
    
            if ( false === $fullsizepath || !file_exists($fullsizepath) )
                return;
    
            if ( wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $fullsizepath ) ) )
                return true;
            else
                return false;
        }
    }
    

    Примечание. Эта функция не очень масштабируема. Он будет перебирать все изображения и восстанавливать эскизы один за другим, что может потреблять большой объем памяти. Таким образом, вы можете улучшить его.

    • 0
    • как мы можем масштабировать его?

      • 0
    • @MildFuzz: плагин теперь делает это в цикле Ajax, поэтому размер только одного изображения изменяется при каждом запросе. Вы просто оставляете окно браузера открытым, пока он последовательно обрабатывает каждое изображение. Если вы делаете это в одном запросе (как раньше делал плагин), вы сталкиваетесь с ограничениями памяти и времени.

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

      • 0
    • @Mild Fuzz : под «загрузкой вложения» вы имеете в виду, когда файл запрашивается браузером? Если это так, вы в конечном итоге значительно понизите производительность сервера, потому что в настоящее время Apache обслуживает изображения, а WordPress никогда их не обрабатывает. Вы можете попробовать подключить шаблон 404 и попытаться выяснить, что оттуда генерировать, но возможны неожиданные несовместимости. Жаль, что у меня не было времени возиться с этим, но, к сожалению, сейчас его нет. Может быть, вы могли бы рассказать нам немного больше о вашей ситуации и прецеденте? Почему стандартный подход не работает для вас?

      • 0
    • @*Mild Fuzz* — вы также можете запустить код, аналогичный коду @sorich87, указанному в задаче псевдохрона: bit.ly/wp-pseudo-cron

      • 0

Оставить ответ

You must login to add an answer.