উত্তর:
মনে হয় উত্তরটি হ'ল না ...
আমি মূল ফাংশনগুলি অনুসরণ করেছি এবং একটি শেষের সন্ধান পেয়েছি। এবং এই পোস্টটি খুঁজে পেয়েছি (উপরে থেকে আমি কীভাবে add_image_size () ফসল তৈরি করতে পারি? ) যেখানে রাস্ট বলেছেন:
মধ্যবর্তী চিত্র জেনারেশন অত্যন্ত অনমনীয়। Image_resize () এটিকে কোডের কাছাকাছি রাখে এবং পুরোপুরি হুকের অভাব থাকে।
তবে , অন্যান্য উত্তর ( ব্র্যাড থেকে ) এবং তিনি প্রকাশিত কোড ( ওয়ার্ডপ্রেসে চিত্রের শস্য অবস্থান ) এর নেতৃত্বে , আমি মনে করি এটি পেয়েছি :)
ফাংশনে bt_generate_attachment_metadata
, আমি স্রেফ কলটি পরিবর্তন করেছি bt_image_make_intermediate_size
শেষ প্যারামিটারটি অন্তর্ভুক্ত করার জন্য$size
$resized = bt_image_make_intermediate_size( $file, $size_data['width'], $size_data['height'], $size_data['crop'], $size );
এবং ফাংশনটির সূচনা bt_image_make_intermediate_size
হিসাবে নিম্নরূপ:
$size
ফাংশনে প্যারামিটার যুক্ত করা হয়েছেnull
মান $suffix
, একটি switch
আমাদের নতুন প্রত্যয় থেকেfunction bt_image_make_intermediate_size( $file, $width, $height, $crop = false, $size ) {
if ( $width || $height ) {
switch($size) {
case 'thumbnail':
$suffix = 't';
break;
case 'medium':
$suffix = 'm';
break;
case 'large':
$suffix = 'l';
break;
default:
$suffix = null;
break;
}
$resized_file = bt_image_resize( $file, $width, $height, $crop, $suffix, null, 90 );
এখানে , কেবল রেফারেন্সের জন্য আমার মোডগুলি সহ পুরো কোডের একটি অনুলিপি।
এবং মূল থেকে পৃথক ।
খুব সম্ভবত, সমস্ত কোডটি একটি খালি হাড়ের কাছে সঙ্কুচিত হতে পারে, তবে আমরা কাস্টমযুক্ত ক্রপযুক্ত চিত্রগুলির সুবিধা পেয়ে থাকি :))
আপনি ইমেজ_মেক_মিটারমিটার_ সাইজ ফিল্টারটি ব্যবহার করতে পারেন তবে আপনি যে $ ফাইলের নামটি পেয়েছেন (এবং তারপরে ফাইলটির নাম পরিবর্তন করুন, কারণ এটি ইতিমধ্যে উত্পন্ন হয়েছে) অনুযায়ী আপনি মধ্যবর্তী ফাইলটি কোন নামটি পরিবর্তন করতে চান তা নির্ধারণ করতে হবে।
আমি কেবল "থাম্বনেল" এর জন্য একটি মধ্যবর্তী আকারের চিত্র তৈরি করি, তাই এটি এটির মতো সহজ:
add_filter( 'image_make_intermediate_size', function( $filename ) {
// old 2017_234783843-100x100.jpg
$old = $filename;
// new 2017_234783843-thumbnail.jpg
$new = preg_replace("/(\d+_\d+)-\d+x\d+\.(.*)/i", "$1-thumbnail.$2", $old );
rename($old, $new);
return $new;
} );
"/(.*)-\d+x\d+\.(.*)/i"