當我創建一個頁面,添加一個圖庫,並在前端瀏覽該圖庫時,它將瀏覽與該圖片相關聯的所有附件,而不僅僅是該圖庫中的圖片。有沒有辦法過濾所有其他附件,只顯示某個圖庫中的圖像?例如,當我刪除圖庫並在同一頁面上添加新圖庫時,只顯示新圖庫?僅在圖庫中顯示圖片/附件?
任何想法?
當我創建一個頁面,添加一個圖庫,並在前端瀏覽該圖庫時,它將瀏覽與該圖片相關聯的所有附件,而不僅僅是該圖庫中的圖片。有沒有辦法過濾所有其他附件,只顯示某個圖庫中的圖像?例如,當我刪除圖庫並在同一頁面上添加新圖庫時,只顯示新圖庫?僅在圖庫中顯示圖片/附件?
任何想法?
這可能不是最優雅的方式,但我發現它非常有用。
將帖子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);
}
嗨,非常感謝。我想了解你的代碼。清楚;我應該創建一個帖子,添加一個媒體庫,並將postid放在創建的帖子的'$ ids ['ids']'右邊?我應該如何回顯/顯示獲得的元素?因爲代碼(如果正確使用)不顯示任何內容。 – RobbertT
創建一個帖子,然後通過在「添加媒體」界面中創建一個圖庫來插入一個圖庫。一旦添加了圖庫,您應該在內容中獲得一個大框,如果將鼠標懸停在其上,則可以看到刪除和編輯按鈕。該函數不會輸出任何內容,它只會返回附件對象,允許您在顯示圖庫之前操作大小和喜好。我使用顯示結果的代碼更新了我的答案。 – tobbr
好的謝謝。這實際上幫助我進一步! – RobbertT
RobbertT嗨。您能否讓我知道您嘗試過的內容以及您使用的代碼。謝謝 – ggdx