Я создаю сайт членов с WordPress Multisite. Можно ли ограничить количество создаваемых изображений в зависимости от выбранного шаблона?
Я пробовал следующие строки кода для создания определенных изображений в шаблоне галереи:
// Generate on all uploads
add_theme_support('post-thumbnails');
set_post_thumbnail_size( 1440, 350, true );
add_image_size( 'standard_box', 450, 215, true );
add_image_size( 'default_image', 691, 9999 );
// Generate on gallery template only
if ( is_page_template('page-gallery.php') ) {
add_image_size( 'gallery', 900, 9999 );
add_image_size( 'gallery_thumb', 450, 450, true );
}
Это не сработало. Я провел некоторое исследование и не могу найти что-нибудь по этому вопросу. Если бы вы могли указать мне правильное направление, я был бы очень благодарен.
Ответы:
Это всегда было для меня ошибкой - отсутствие размера изображения по требованию и последующее количество файлов, которые вы можете получить, если у вас много размеров!
Я вижу логику ваших усилий - проблема в том, что
add_image_size
действительно вступает в игру только в момент загрузки. Как таковой,is_page_template(..)
всегда будетfalse
.Быстрый Google выкопал Aqua Resizer , скрипт, разработанный для решения этой проблемы. Вместо использования
add_image_size
вы используетеaq_resize
непосредственно в своей теме, и если размер изображения не существует, он создается и кэшируется на лету.На самом деле я использовал похожую, хотя и разную технику на нескольких сайтах с изображениями разных размеров. Вы по-прежнему сохраняете издержки WordPress, генерируя каждый размер для каждого загружаемого изображения - они создаются на лету (и кэшируются) по мере необходимости. Отличие состоит в том, что вы можете просто использовать все стандартные функции изображения WP и теги шаблонов, как обычно!
Кроме того, как упомянул @Waqas, использование Aqua Resizer оставит потерянные файлы, когда вы удалите изображение из медиатеки. С моей техникой все файлы будут удалены, так как они сохраняются в базе данных и распознаются WordPress.
И на практике:
Я собираюсь превратить это в плагин, который автоматически преобразует все
add_image_size
вызовы в изменение размера по требованию, так что следите за этим!источник
Отказ от ответственности:
- Это не на самом деле ответ.
- Он будет предназначен , чтобы помочь вам с вашими дополнительными исследованиями по этой теме.
- Кроме того , она является отражающей а - по крайней мере , войлок - в последнее время более частое возникновение подобных вопросов в отношении подобных проблем.
Дополнительная информация по этой теме по разработке Wordpress:
Примечание: список не упорядочен и не является исчерпывающим.
источник
Если вы хотите создавать большие пальцы на лету, вы можете использовать акваизайзер изображений Aqua , но у этого мини-скрипта есть недостаток. Созданные превью не будут удалены при удалении изображения из библиотеки. Но это не имеет большого значения. При необходимости вы можете сделать это с помощью команд SHH
источник
Это не прямой ответ на вашу проблему. Но я помогу вам сделать имидж в соответствии с вашими потребностями.
Когда вы используете add_image_size, он не изменяет размеры существующих изображений. он работает только для новых изображений, которые будут загружены после добавления функции add_image_size.
Таким образом, ваш код не будет генерировать новые изображения для функции is_page_template.
Но вы можете использовать простой класс php для решения вашей проблемы ... это известный класс php, который используется для многих премиальных тем для WordPress. Это называется Aqua-Resizer.
Вы можете найти более подробную информацию здесь https://github.com/syamilmj/Aqua-Resizer Wiki: https://github.com/syamilmj/Aqua-Resizer/wiki
Проблема, которая может возникнуть:
Эта функция работает таким образом ....
Поэтому, когда он не может обрезать (для небольшого изображения, которое определено вашей высотой или шириной), он ничего не показывает. Вы можете преодолеть эту ситуацию, проверив, получаете ли вы нулевое значение после передачи URL-адреса в этой функции очень легко, как у меня здесь ....
Таким образом, вы можете быть уверены, что определенное изображение будет сгенерировано для определенного шаблона страницы, и таким образом ваш сайт будет намного чище.
PS: этот класс php использует ядро WordPress, поэтому проблем с безопасностью нет.
источник