Pośrednie generowanie obrazu jest wyjątkowo sztywne. image_resize()
utrzymuje go blisko kodu i całkowicie brakuje haków.
Prawie jedyną opcją tego jest podpięcie się wp_generate_attachment_metadata
i zastąpienie obrazu wygenerowanego przez WP własnym (który będzie wymagał trochę image_resize()
rozwidlenia).
Potrzebuję tego do pracy, aby móc później udostępnić trochę kodu.
Ok, tu jest szorstki, ale działający przykład. Pamiętaj, że konfigurowanie uprawy w ten sposób wymaga zrozumienia imagecopyresampled()
.
add_filter('wp_generate_attachment_metadata', 'custom_crop');
function custom_crop($metadata) {
$uploads = wp_upload_dir();
$file = path_join( $uploads['basedir'], $metadata['file'] ); // original image file
list( $year, $month ) = explode( '/', $metadata['file'] );
$target = path_join( $uploads['basedir'], "{$year}/{$month}/".$metadata['sizes']['medium']['file'] ); // intermediate size file
$image = imagecreatefromjpeg($file); // original image resource
$image_target = wp_imagecreatetruecolor( 44, 44 ); // blank image to fill
imagecopyresampled($image_target, $image, 0, 0, 25, 15, 44, 44, 170, 170); // crop original
imagejpeg($image_target, $target, apply_filters( 'jpeg_quality', 90, 'image_resize' )); // write cropped to file
return $metadata;
}
image_resize
funkcję. Rarst miał na myśli to, że trzeba będzie się przyłączyć do procesu zmiany rozmiaru, ale samodzielnie należy utworzyć rozmiary obrazu.Kodeks Wordpress ma odpowiedź poniżej.
A także kodeks odwołuje się do strony, która pokazuje, jak działają pozycje uprawy.
źródło
Opracowałem rozwiązanie tego problemu, które nie wymaga zhakowania rdzenia: http://bradt.ca/archives/image-crop-position-in-wordpress/
Przesłałem również łatkę do rdzenia: http://core.trac.wordpress.org/ticket/19393
Dodaj siebie jako DW na bilecie, aby pokazać swoje poparcie dla dodania go do rdzenia.
źródło
Możesz użyć wtyczki Miniatura pozycji kadrowania, aby wybrać pozycję kadrowania miniatur.
źródło
Alternatywne rozwiązanie tutaj: http://pixert.com/blog/cropping-post-featured-thumbnails-from-top-instead-of-center-in-wordpress-with-native-cropping-tool/
Wystarczy dodać ten kod do functions.php, a następnie użyć wtyczki „Regenerate Thumbnails” ( https://wordpress.org/plugins/regenerate-thumbnails/ ):
źródło