在WordPress中获取媒体中所有文件的元数据


Get metadata of all files in the media in WordPress

我需要检索非图像文件的元数据,如word、excel或pdf文档。当元数据被附加到页面或帖子时,我可以检索它,但当它没有被附加时,我什么也得不到。

我尝试使用get_post_meta( $post_id );wp_get_attachment_metadata( $attachment_id );

使用get_post_meta( $post_id );时,我只得到以下信息:

Array
(
    [_wp_attached_file] => Array
        (
            [0] => 2015/03/test.xlsx
        )
    [_edit_lock] => Array
        (
            [0] => 1425404399:741
        )
)

wp_get_attachment_metadata( $attachment_id );没有任何内容。

您可以使用获取所有附件(无论附件是附在帖子还是页面上)

$attachments = get_posts( array('post_type' => 'attachment) );

制作一个你们不想要的mime类型的数组:

$exclude = array(
    'image/jpeg',
    ...
);

然后你可以浏览它们,看看mime类型:

foreach ($attachments as $attach) {
    if (!in_array($attach->post_mime_type, $exclude) {
    // Do what you want to do with it
    }
}

wp_get_attachment_metadata似乎不会返回图像(我想还有视频)以外的文件的元数据。您仍然可以在媒体上传器中插入描述和替代文本,例如PDF文件。我猜想你指的是那些领域。

Wordpress将这些值存储到post_content和post_except中,所以如果你知道附件的附件id(post-id),那么你就可以查询该帖子并打印元数据:

$pdf = get_post($attachment_id);
echo $pdf->post_content;
echo $pdf->post_excerpt;