উত্পন্ন থাম্বনেলগুলির জন্য কাস্টম নাম সেট করুন


9

সেই স্বয়ংক্রিয় উত্পন্ন থাম্বনেইলগুলির নামকরণের কনভেনশন সেট করতে কোনও ফিল্টার পাওয়া যায়?

এটার মতো কিছু:

  • thumbnail_150x150.jpg -> thumbnail-s.jpg
  • thumbnail_300x300.jpg -> thumbnail-m.jpg
  • thumbnail_600x600.jpg -> thumbnail-l.jpg

উত্তর:


4

মনে হয় উত্তরটি হ'ল না ...

আমি মূল ফাংশনগুলি অনুসরণ করেছি এবং একটি শেষের সন্ধান পেয়েছি। এবং এই পোস্টটি খুঁজে পেয়েছি (উপরে থেকে আমি কীভাবে 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 );

এখানে , কেবল রেফারেন্সের জন্য আমার মোডগুলি সহ পুরো কোডের একটি অনুলিপি।
এবং মূল থেকে পৃথক

খুব সম্ভবত, সমস্ত কোডটি একটি খালি হাড়ের কাছে সঙ্কুচিত হতে পারে, তবে আমরা কাস্টমযুক্ত ক্রপযুক্ত চিত্রগুলির সুবিধা পেয়ে থাকি :))


1
দুঃখিত, এখনও ভ্রমণ। আমি শীঘ্রই এটি পরীক্ষা করব এবং আপনাকে জানাবো। ধন্যবাদ।
শান লি

এই উত্তর এখনও বৈধ? কয়েক বছর হয়ে গেছে, তাই ...
অ্যাথক্সক্স

2

আপনি ইমেজ_মেক_মিটারমিটার_ সাইজ ফিল্টারটি ব্যবহার করতে পারেন তবে আপনি যে $ ফাইলের নামটি পেয়েছেন (এবং তারপরে ফাইলটির নাম পরিবর্তন করুন, কারণ এটি ইতিমধ্যে উত্পন্ন হয়েছে) অনুযায়ী আপনি মধ্যবর্তী ফাইলটি কোন নামটি পরিবর্তন করতে চান তা নির্ধারণ করতে হবে।

আমি কেবল "থাম্বনেল" এর জন্য একটি মধ্যবর্তী আকারের চিত্র তৈরি করি, তাই এটি এটির মতো সহজ:

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;
} );

1
Regex কম সুনির্দিষ্ট হতে পারে"/(.*)-\d+x\d+\.(.*)/i"
Benoît
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.