2013-02-07 3 views
0

Lorsque je crée une page, que j'ajoute une galerie et que je parcours cette galerie sur le front-end, elle parcourt toutes les pièces jointes associées à cette page, et non seulement les images de cette galerie. Existe-t-il un moyen de filtrer toutes les autres pièces jointes et de ne montrer que les images dans une certaine galerie? Alors que, par exemple, lorsque je supprime la galerie et ajoute une nouvelle galerie sur la même page> seule la nouvelle galerie est affichée?Afficher uniquement les images/pièces jointes dans la galerie?

Des idées?

+0

Salut RobbertT. Pouvez-vous s'il vous plaît laissez-moi savoir ce que vous avez essayé et le code que vous utilisez. Merci – ggdx

Répondre

0

Ce n'est peut-être pas le moyen le plus élégant, mais je l'ai trouvé très utile.

Passer un ID de publication à la fonction ci-dessous charge une galerie à partir du post_contenu de ce message. Donc, vous créez une galerie et l'insérez dans votre contenu de poste, puis dans le modèle vous exécutez cette fonction et sera retourné avec un tableau de pièces jointes dans cette galerie que vous êtes libre de tout, avec diaporamas et les goûts.

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

Notez que le shortcode n'est pas coupé du contenu, de sorte que lorsque vous affichez le contenu que vous devez l'exécuter par la fonction strip_shortcodes, à savoir:

echo strip_shortcodes(get_the_content()); 

Cela vous permet de mettre à jour la galerie chaque fois tu veux avec tout ce que tu veux.

EDIT:

Pour afficher simplement toutes les images:

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

Salut, merci beaucoup. J'essaie de comprendre votre code. Pour être clair; Je devrais créer un post, ajouter une galerie de médias et mettre le postid dans le '$ ids ['ids']' du poste créé juste? Comment dois-je faire écho/afficher les éléments obtenus? Parce que le code (s'il est utilisé correctement) n'affiche rien. – RobbertT

+0

créez un post, puis insérez-y une galerie en en créant une dans l'interface "Ajouter un média". Une fois la galerie ajoutée, vous devriez obtenir une grande boîte dans le contenu et si vous passez la souris dessus, vous pouvez voir les boutons supprimer et éditer. la fonction ne sort rien, elle ne renvoie que les objets attachés qui vous permettent de manipuler la taille et les goûts avant d'afficher la galerie. J'ai mis à jour ma réponse avec du code montrant comment afficher les résultats. – tobbr

+0

Ok, merci. Cela m'a vraiment aidé à aller plus loin! – RobbertT

Questions connexes