wordpress获取不是图像的附件

时间:2012-03-29 14:29:03

标签: wordpress

wordpress在图像附件方面功能非常强大 - 但我找不到任何关于如何获取不是图像的附件的文档。

现在,我写了这个函数:

function ok99_get_post_file_attachment($mime='application/pdf',$limit=-1) {
    global $post;
    $attachments = get_children( array('post_parent' => $post->ID, 'post_status' => 'inherit', 'post_type' => 'attachment','post_mime_type' => $mime, 'order' => 'ASC', 'orderby' => 'menu_order ID', 'posts_per_page'=>$limit) );

    if ($attachments) {
       echo 'Your Attachments : <br/>';
        foreach ($attachments as $att) {
        //$attachment = array_shift($attachments); // debug to delete
        echo wp_get_attachment_url($att->ID) . '<br/>';
        the_attachment_link($attachment->ID, false);}
    }

    return false;
}

我的问题是:这是获取不是图片的附件的唯一方法吗? 有没有办法在没有其他查询的情况下这样做?

3 个答案:

答案 0 :(得分:1)

我正在使用这种技术来查询图像或图像或视频文件,即“负面”mime类型查询。它返回一个post对象数组(类似于get_posts()返回的对象),可以很容易地修改为排除其他类型的附件媒体,或使用vsprintf()完全通用。

function wpse9927425_get_downloads($post_id) {
    global $wpdb;

    $sql_query = $wpdb->prepare(
        "SELECT * FROM $wpdb->posts
        WHERE post_type = %s
            AND post_parent = %d
            AND post_mime_type NOT LIKE %s
            AND post_mime_type NOT LIKE %s
        ORDER BY menu_order, post_title ASC",
        'attachment',
        $post_id,
        'image/%',
        'video/%'
    );
    $files = $wpdb->get_results( $sql_query );

    return $files;
}

答案 1 :(得分:0)

似乎再一次我需要回答自己 - 也因为我没有对此问题的其他意见

似乎没有其他方法可以做到这一点(意思是 - 有很多方法 - 但没有其他直接查询)

答案 2 :(得分:0)

我通过指定MIME类型来获取非图像附件:

if ( $attachments = get_children( array(
    'post_type' => 'attachment',
    'post_mime_type' => array('application/doc','application/pdf', 'text/plain'),
    'numberposts' => 15,

)));
foreach ($attachments as $attachment) {
echo '<a href="' . wp_get_attachment_url( $attachment->ID ) . '">Download Fact    Sheet</a>';
echo '</div>';
}