Появлялась ли у вас необходимость автоматически делать изображения монохромными при загрузке их на блог WordPress? Теперь есть решение. В этой статье мы покажем вам как, используя несколько простых инструментов PHP для работы с изображениями и функции Вордпресс автоматически делать изображения монохромными во время загрузки. Такие серые изображения можно использовать для слайдеров, в галереях или в любых других элементах сайта.
Первым делом добавляем код в файл functions.php вашей темы или в плагин для сайта WordPress:
add_action('after_setup_theme','themename_bw_size'); function themename_bw_size() { add_image_size('themename-bw-image', 100, 100, true); }
Код выше просто добавляем дополнительный размер изображений для загрузчика. Размер установлен в 100 x 100px с кадрированием. Разрешение можно изменить под свои нужды. После этого добавляем еще один код:
add_filter('wp_generate_attachment_metadata','themename_bw_filter'); function themename_bw_filter($meta) { $file = wp_upload_dir(); $file = trailingslashit($file['path']).$meta['sizes']['themename-bw-image']['file']; list($orig_w, $orig_h, $orig_type) = @getimagesize($file); $image = wp_load_image($file); imagefilter($image, IMG_FILTER_GRAYSCALE); switch ($orig_type) { case IMAGETYPE_GIF: imagegif( $image, $file ); break; case IMAGETYPE_PNG: imagepng( $image, $file ); break; case IMAGETYPE_JPEG: imagejpeg( $image, $file ); break; } return $meta; }
Код выше сообщает загрузчику о том, что нужно создать дополнительный размер для загружаемых картинок. Обрезает его до размеров, указанных в предыдущем шаге. Затем применяет фильтр для изображения: Grayscale.
Если вы проделываете это для миниатюр записи, то вывести их в своем шаблоне можно так:
<?php the_post_thumbnail( 'themename-bw-image' ); ?>
Если же вы используете для определенных вложений, то нужно использовать функцию wp_get_attachment_image.
Примечание: Необходимо изменить themename на название вашей темы.
Благодарности за этот интересный хак уходят к Otto.