2012-03-29 3 views
0

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

мой вопрос: это единственный способ получить вложения, которые не являются изображения? Есть ли способ сделать это без другого запроса?

ответ

0

Кажется, что еще раз мне нужно будет ответить на себя - и потому, что у меня нет другого входа на этот вопрос

, кажется, нет никакого другого способа сделать это (то есть - есть много способов - но не без другого прямого запроса)

+0

Я немного поздно вечеринка, поэтому, возможно, что-то изменилось в WordPress, так как ваши вопросы были опубликованы. Но в любом случае, см. мой ответ для решения с одним запросом! :) – Simon

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>'; 
} 
+0

Что делать, если документ не является одним из этих трех типов? – durron597

+0

Просто добавьте массив, в котором перечислены типы mime – rezon8dev

+0

, как это отличается от того, что я написал в исходном вопросе? –

1

Я использую этот метод для запроса изображений, или нет изображения или видео-файлы, т.е. «отрицательный» запрос типа mime. Она возвращает массив почтовых объектов (подобно тому, что было бы возвращено 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; 
} 
+0

+1 спасибо. Хотя мой первоначальный вопрос заключался в том, чтобы сделать это БЕЗ дополнительных запросов - эта техника действительно интересна. –

Смежные вопросы