আমি একটি সংযুক্তি ফাইলের আকারটি কীভাবে পেতে পারি?


34

সংযুক্তি লিঙ্কগুলি প্রদর্শন করতে আমি নিম্নলিখিত টেম্পলেট কোডটি ব্যবহার করছি:

$args = array(
    'post_type' => 'attachment',
    'numberposts' => -1,
    'post_status' => null,
    'post_parent' => $main_post_id
);

$attachments = get_posts($args);

foreach ($attachments as $attachment)
{
    the_attachment_link($attachment->ID, false);
}

তবে লিঙ্কের পরে আমার ফাইলটির আকার প্রদর্শন করা দরকার। কিভাবে আমি এটি করতে পারব?

আমি অনুমান করছি যে আমি ফাইলটির পথ নির্ধারণ করতে পেরেছি (মাধ্যমে wp_upload_dir()এবং এর substr()মধ্যে wp_get_attachment_url()) এবং কলটি filesize()কিন্তু অগোছালো বলে মনে হচ্ছে, এবং আমি কেবল ভাবছিলাম যে ওয়ার্ডপ্রেসটিতে কোনও পদ্ধতি তৈরি হয়েছে কিনা।


মজার বিষয় হল, বিবরণে বা তালিকায় কোনও ফাইলের ওয়েটারের আকার প্রদর্শন করার জন্য ব্যাকএন্ডে কোনও কার্যকারিতা নেই। টিকিট # 8739
hakre

উত্তর:


42

যতদূর আমি জানি, ওয়ার্ডপ্রেস এর জন্য কিছু অন্তর্নির্মিত নেই, আমি কেবল এটি করব:

filesize( get_attached_file( $attachment->ID ) );


আহ - এটিকে ঘিরে গোলযোগের চেয়ে আরও ভাল দেখাচ্ছে wp_upload_dir()!
ববি জ্যাক

আমার কেবল একটি পোস্ট সংযুক্তির ফাইলের আকার পাওয়া দরকার। পোস্ট_ প্যারেন্টে আমি get_the_ID () ব্যবহার করেছি। কিন্তু কোন ব্যবহার।
কার্শো

10

আমি সহজেই পঠনযোগ্য ফর্ম্যাটে ফাইলের আকারটি প্রদর্শন করার জন্য এটি ফাংশন.এফপি ব্যবহার করেছি:

function getSize($file){
$bytes = filesize($file);
$s = array('b', 'Kb', 'Mb', 'Gb');
$e = floor(log($bytes)/log(1024));
return sprintf('%.2f '.$s[$e], ($bytes/pow(1024, floor($e))));}

এবং তারপরে আমার টেমপ্লেটে:

echo getSize('insert reference to file here');

8
নতুন ফাংশন তৈরি করার দরকার নেই। ডাব্লুপি এর দুটিতে কোর নির্মিত into size_format()এবংwp_convert_bytes_to_hr()
ব্র্যাডি

8
দেখে মনে হচ্ছে wp_convers_bytes_to_hr () এখন সাইজ_ ফর্ম্যাট () এর পক্ষে অবমুক্ত করা হয়েছে
ডেভাম্যাক


3

কাস্টম ফিল্ড প্লাগইনটির মাধ্যমে যুক্ত একটি ফাইলের আকার অনুসন্ধান করতে, আমি এটি করেছি:

$fileObject = get_field( 'file ');
$fileSize   = size_format( filesize( get_attached_file( $fileObject['id'] ) ) );

কেবলমাত্র আপনি কাস্টম ফিল্ডের "রিটার্ন মান" "ফাইল অবজেক্ট" তে সেট করেছেন তা নিশ্চিত করুন।


3

মানুষের পঠনযোগ্য ফাইলের আকার পেতে আরও একটি সহজ সমাধান রয়েছে।

$attachment_id  = $attachment->ID;
$attachment_meta = wp_prepare_attachment_for_js($attachment_id);

echo $attachment_meta['filesizeHumanReadable'];

সবকিছুর জন্য একটি
ডাব্লুপি_ফান ফিকশন রয়েছে

গৃহীত উত্তর হওয়া উচিত
ব্যবহারকারীর67672424

1

আমি একই সন্ধান করছিলাম এবং এই ওয়ার্ডপ্রেসটি অন্তর্নির্মিত সমাধানটি পেয়েছি।

$args = array(
    'post_type' => 'attachment',
    'numberposts' => -1,
    'post_status' => null,
    'post_parent' => $main_post_id
);

$attachments = get_posts($args);

foreach ($attachments as $attachment)
{
    $attachment_id = $attachment->ID;
    $image_metadata = wp_get_attachment_metadata( $attachment_id );
    the_attachment_link($attachment->ID, false);
    echo the_attachment_link['width'];
    echo the_attachment_link['height'];
}

আরো দেখুন wp_get_attachment_metadata()


2
প্রশ্নটি ফাইলের আকার সম্পর্কে বাইট সংখ্যা হিসাবে, চিত্রের মাত্রা হিসাবে নয়।
রার্স্ট

দোহ, আমি এটা পড়তে মিস করছি। :-)
ভাইয়ু

1

কমপক্ষে অডিওর জন্য, ফাইলের আকারটি "মেটাডেটা" হিসাবে সংরক্ষণ করা হয়।

$metadata = wp_get_attachment_metadata( $attachment_id );
echo $metadata['filesize'];

চিত্র এবং ভিডিওর ক্ষেত্রে এটি নাও হতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.