Frage

Ich verwende den folgenden Vorlagencode, um Anhangslinks anzuzeigen:

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

Aber nach dem Link muss ich die Größe der Datei anzeigen. Wie kann ich das machen?

Ich vermute, ich könnte den Pfad der Datei (via "bestimmen wp_upload_dir() und ein substr() von wp_get_attachment_url()) und Ruf an filesize() Aber das scheint chaotisch und ich frage mich nur, ob es eine Methode in WordPress integriert hat.

War es hilfreich?

Lösung

Soweit ich weiß, hat WordPress nichts dafür eingebaut, ich würde es einfach tun:

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

Andere Tipps

Ich habe dies bereits in Funktionen.php verwendet, um die Dateigröße in einem leicht lesbaren Format anzuzeigen:

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

Und dann in meiner Vorlage:

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

Ich würde tun:

$attachment_filesize = filesize( get_attached_file( $attachment_id ) );

Oder mit lesbarer Größe wie 423.82 KB

$attachment_filesize = size_format( filesize( get_attached_file( $attachment_id ) ), 2 );

Refs: get_attached_file (), Dateigröße(), size_format ()

Notiz : Definieren Sie Ihre $attachment_id

Um die Größe einer Datei zu ermitteln, die über das benutzerdefinierte Fields -Plugin hinzugefügt wurde, habe ich Folgendes gemacht:

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

Stellen Sie einfach sicher, dass Sie den "Rückgabewert" des benutzerdefinierten Feldes auf "Dateiobjekt" festlegen.

Es gibt eine einfachere Lösung, um menschliche lesbare Dateigrößen zu erhalten.

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

echo $attachment_meta['filesizeHumanReadable'];

Ich suchte nach demselben und fand diese WordPress-integrierte Lösung.

$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'];
}

Sehen Sie mehr bei wp_get_attachment_metadata()

Zumindest für Audio wird die Dateigröße als "Metadaten" gespeichert.

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

Dies nicht dürfen Seien Sie der Fall für Bilder und Video.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit wordpress.stackexchange
scroll top