2009-09-02 102 views
8

你好!我正在尋找一種方式來列出帖子的媒體庫中的所有圖像文件。WordPress的:查詢帖子媒體庫中的所有圖像

我的意思是,如果一個文件已經在創建或編輯帖子的時候上傳,是以某種方式與帖子關聯的文件,我可以從這個數據創建一個列表。

我認爲,next_image_link()/ previous_image_link();模板標籤和我發現的一樣近。

我認爲這應該是接近:

$query = 'SELECT * FROM `wp_posts` 
WHERE `post_parent` = \''.$_GET['post_id'].'\' 
AND `post_mime_type` = \'image/jpeg\' 
ORDER BY `menu_order` ASC'; 

感謝。

+3

**永遠不要做這個** - 您正在設置自己的數據庫和/或應用程序通過[SQL注入](https://en.wikipedia.org/wiki/SQL_injection)來破壞。任何時候你直接從你從客戶端獲得的數據建立一個數據庫查詢字符串,*你做錯了*。始終使用[參數化查詢](http://stackoverflow.com/a/60496/41688)。 – BryanH 2012-07-10 19:26:07

回答

11

在wordpress術語中,您上傳到特定文章的每個圖像都稱爲附件。 要列出所有附件,您可以使用get_children()功能:

$images =& get_children('post_type=attachment&post_mime_type=image&post_parent=10'); 

$counter=0; 
foreach((array) $images as $attachment_id => $attachment) 
{ 
    $counter++; 
    echo "<a href='".wp_get_attachment_link($attachment_id) . "'>image $counter</a><br />"; 
} 

的算法是類似的東西。

0

如果你正在尋找一個插件來管理圖片庫,你可以使用attachments插件,

http://wordpress.org/plugins/attachments/

它使畫廊分開,不把圖像畫廊簡碼的帖子內容,從而提供你在你的文章/頁面/自定義文章中完全控制圖像顯示。您還可以通過只需將正下降

這裏是如何檢索您的畫廊圖像的示例代碼更改圖像的順序,

<?php $attachments = new Attachments('attachments'); /* pass the instance name */ ?> 
<?php if($attachments->exist()) : ?> 
    <h3>Attachments</h3> 
    <p>Total Attachments: <?php echo $attachments->total(); ?></p> 
    <ul> 
    <?php while($attachments->get()) : ?> 
     <li> 
     ID: <?php echo $attachments->id(); ?><br /> 
     Type: <?php echo $attachments->type(); ?><br /> 
     Subtype: <?php echo $attachments->subtype(); ?><br /> 
     URL: <?php echo $attachments->url(); ?><br /> 
     Image: <?php echo $attachments->image('thumbnail'); ?><br /> 
     Source: <?php echo $attachments->src('full'); ?><br /> 
     Size: <?php echo $attachments->filesize(); ?><br /> 
     Title Field: <?php echo $attachments->field('title'); ?><br /> 
     Caption Field: <?php echo $attachments->field('caption'); ?> 
     </li> 
    <?php endwhile; ?> 
    </ul> 
<?php endif; ?>