2013-02-07 44 views
0

當我創建一個頁面,添加一個圖庫,並在前端瀏覽該圖庫時,它將瀏覽與該圖片相關聯的所有附件,而不僅僅是該圖庫中的圖片。有沒有辦法過濾所有其他附件,只顯示某個圖庫中的圖像?例如,當我刪除圖庫並在同一頁面上添加新圖庫時,只顯示新圖庫?僅在圖庫中顯示圖片/附件?

任何想法?

+0

RobbertT嗨。您能否讓我知道您嘗試過的內容以及您使用的代碼。謝謝 – ggdx

回答

0

這可能不是最優雅的方式,但我發現它非常有用。

將帖子ID傳遞給下面的函數將從該帖子的post_content中加載一個圖庫。因此,您需要創建一個圖庫並將其插入到您的發佈內容中,然後在模板中運行此功能,並將返回該圖庫中的一系列附件,您可以隨意使用這些附件,例如幻燈片和類似內容。

function wp_load_gallery($post_id) { 
    $post = get_post($post_id); 
    $regx = '/' . get_shortcode_regex() . '/'; 
    preg_match($regx, $post->post_content, $matches); 
    $ids = shortcode_parse_atts($matches[3]); 

    $gallery = array(); 
    foreach(explode(',', $ids['ids']) as $id) { 
    if($id) { 
     $gallery[] = get_post($id); 
    } 
    } 

    return $gallery; 
} 

注意,簡碼不會從內容剪切,所以當你顯示的內容,你應該通過strip_shortcodes功能運行,即:

echo strip_shortcodes(get_the_content()); 

這樣就可以更新庫,只要你想用任何你想要的。

編輯:

要簡單地顯示所有圖像:

$gallery = wp_load_gallery($YOUR_POST_ID); 
foreach($gallery as $image) { 
    echo wp_get_attachment_image($image->ID); 
} 
+0

嗨,非常感謝。我想了解你的代碼。清楚;我應該創建一個帖子,添加一個媒體庫,並將postid放在創建的帖子的'$ ids ['ids']'右邊?我應該如何回顯/顯示獲得的元素?因爲代碼(如果正確使用)不顯示任何內容。 – RobbertT

+0

創建一個帖子,然後通過在「添加媒體」界面中創建一個圖庫來插入一個圖庫。一旦添加了圖庫,您應該在內容中獲得一個大框,如果將鼠標懸停在其上,則可以看到刪除和編輯按鈕。該函數不會輸出任何內容,它只會返回附件對象,允許您在顯示圖庫之前操作大小和喜好。我使用顯示結果的代碼更新了我的答案。 – tobbr

+0

好的謝謝。這實際上幫助我進一步! – RobbertT