attachment.php et template hierarchy (Créer un compte)

  • Statut : non résolu
5 sujets de 1 à 5 (sur un total de 5)
  • Auteur
    Messages
  • #503772
    ombres-et-lumieres
    Membre
    Chevalier WordPress
    147 contributions

    Bonjour,

    Ma configuration WP actuelle
    – Version de WordPress : 3.3
    – Version de PHP/MySQL : 5 et une râwette
    – Thème utilisé : un descendant d’ Egon par flashxml
    – Extensions en place :
    – Nom de l’hebergeur : ovh
    – Adresse du site : http://www.ombres-et-lumieres.eu

    Problème(s) rencontré(s) : de logique dans la hiérarchie des templates

    Attention, ce que je vais expliquer n’ est pas encore en place sur le site, seulement en local.

    J’ ai découvert avec la version 3.3, la possibilité de créer un galerie à partir de l’ uploader de média qui insèrera un shortcode créant une galerie faiblement paramétrable. Cette galerie dispose mes imagettes avec un liens revoyant sur http://localhost:8888/wordpress/wp-content/uploads/2012/01/madeira150804F06.jpg, et donc une image pleine page sans… mise en page.

    Mon problème est donc de créer cette mise en page.

    Pour me permettre de mieux organiser ma galerie, j’ ai remplacé le shortcode, placé dans l’ éditeur, par le code suivant, dans ma page single.php

    $args = array( ‘post_type’ => ‘attachment’, ‘numberposts’ => -1, ‘post_status’ => null, ‘post_parent’ => $post->ID ); 
    $attachments = get_posts($args);
    if ($attachments) {
    	foreach ( $attachments as $attachment ) {  
    		
    		the_attachment_link( $attachment->ID , false );
    	}
    }

    trouvé dans le codex et qui fait le même boulot mais que je peux formater par css.

    Ensuite, j’ ai créé un template de page « attachment.php », pour publier les images en grande taille, ayant compris que wordpress considère que les médias attachés aux pages ou aux posts, ne sont que des posts « single » un peu particuliers.

    Par mesure de sécurité, j’ ai aussi créé une page single-attachment.php

    Ces deux pages sont codées sur le modèle du single.
    Le problème est que les liens sur les imagettes sont têtus et continuent à pointer vers l’ image dans son répertoire.
    Il y a donc un problème quelque part, car je voudrais un truc du genre:
    « http://localhost:8888/wordpress/blog/14470/test-4/madeira150804F06 », si je suis sur la page blog et dans l’ article « test 4 » et que madeira150804F06.jpg est l’ image pleine taille de l’ imagette publiée dans l’ article « test 4 »

    Ou alors, autre option: dans « single.php » remplacer « the_attachment_link » par « echo wp_get_attachment_image », ce qui m’ affichera une image sans lien, et l’ entourer d’ un balise . Mais quoi mettre dans le « href »? J’ ai pensé à « wp_get_attachment_link() », puisque’ il retourne le permalien soit de la page de l’ attachment soit de l’ image. Mais après essai, lorsque je clique sur une imagette de ma page single, elle est renvoyée vers elle-même. (se recharge)

    J’ ai donc commencé à m’ arracher les cheveux et je crains qu’ il ne m’ en reste plus beaucoup d’ ici peu, à moins d’ avoir la solution

    #808499
    Gueblo
    Participant
    Maître WordPress
    1058 contributions

    Je te conseille la lecture de cet article : http://www.emmanuelgeorjon.com/wordpress-attachments-107/

    #808500
    ombres-et-lumieres
    Membre
    Chevalier WordPress
    147 contributions

    Merci pour ce lien, mais… cet article ne répond pas vraiment à ma question: le bout de code donné en fin va générer une liste d’ albums avec un lien pour y accéder. Mais rien pour accéder à l’ image en grande taille. J’ ai essayé ce bout de code, mais appliqué à mon cas il conduit à une erreur.
    En fait, pour voir ce qui se passe j’ ai ajouté deux lignes à mon code, juste pour connaître la valeur renvoyée par la fonction get_wp_attachment_link, donc:

     ‘attachment’, ‘numberposts’ => -1, ‘post_status’ => null, ‘post_parent’ => $post->ID ); 
    $attachments = get_posts($args);
    if ($attachments) {
    	foreach ( $attachments as $attachment ) {  
    		
    		the_attachment_link( $attachment->ID , false );
    		echo wp_get_attachment_image( $attachment->ID, ‘thumbnail’ ); echo ‘</br>‘;
    		
    		echo  wp_get_attachment_link( $attachment->id , ‘thumbnail’, ‘true’); echo ‘</br>‘;
    		echo  wp_get_attachment_link( $attachment->id , ‘thumbnail’, ‘false’);echo ‘</br>‘;
    		$image_attributes = wp_get_attachment_image_src( $attachment->id ); // returns an array
     		echo $image_attributes[0]; 
    		
    						
    	}
    }
    ?>

    J’ ai donc ajouté deux lignes pour me faire une idée de la valeur renvoyée par cette fonction, dans le cas présent. Et voici le code html généré:

    <a href="http://localhost:8888/wordpress/wp-content/uploads/2012/01/madeira150804C12.jpg" title="reportages réalisés à Bruxelles"><img width="150" height="150" src="http://localhost:8888/wordpress/wp-content/uploads/2012/01/madeira150804C12-150x150.jpg" class="attachment-thumbnail" alt="reportages réalisés à Bruxelles" title="reportages réalisés à Bruxelles"></a>
    <img width="150" height="150" src="http://localhost:8888/wordpress/wp-content/uploads/2012/01/madeira150804C12-150x150.jpg" class="attachment-thumbnail" alt="reportages réalisés à Bruxelles" title="reportages réalisés à Bruxelles">
    <a href="http://localhost:8888/wordpress/wp-content/uploads/2012/01/madeira150804C12.jpg" title="reportages réalisés à Bruxelles"><img width="150" height="150" src="http://localhost:8888/wordpress/wp-content/uploads/2012/01/madeira150804C12-150x150.jpg" class="attachment-thumbnail" alt="reportages réalisés à Bruxelles" title="reportages réalisés à Bruxelles"></a>
    <img width="150" height="150" src="http://localhost:8888/wordpress/wp-content/uploads/2012/01/madeira150804C12-150x150.jpg" class="attachment-thumbnail" alt="reportages réalisés à Bruxelles" title="reportages réalisés à Bruxelles">
    </br>
    Fichier attaché manquant
    </br>
    Fichier attaché manquant
    </br>

    Et l’ affichage des deux dernières lignes renvoie « Fichier attaché manquant »

    Donc la question reste posée: comment afficher une image dans sa taille normale, en respectant le design du site?

    Je ne vois que deux solutions.

    La première en créant une page template allant chercher l’ image grâce à echo wp_get_attachment_image( $ID, ‘full’ ) et transmettant le paramètre $id d’ une page à l’ autre par la méthode « get ».
    La deuxième est de créer sur la page de la galerie des

    contenant les images en plein format et d’ utiliser les évènements javascript pour les afficher. Mais la page va devenir lourde à charger au delà de quelques images.

    Autre question: mais alors à quoi sert la page attachment.php, enfant de la page single.php? ou la page image.php? Quelles forment prennent-elles?
    Comme conseillé, j’ ai été voir dans le thème « classic », que j’ ai downloadé pour l’ occasion, et n’ y ai pas trouvé la page image.

    #808501
    Guy
    Participant
    Maître WordPress
    14817 contributions

    Regarde avec le theme twentyeleven et pour une image dans la bibliothèque de media, tu mets comme cible du lien l’url de l’attachement, pas l’url de l’image. L’image sera affichée avec le template attachment.php.

    #808502
    Gueblo
    Participant
    Maître WordPress
    1058 contributions

    si tu veux que les images de la galerie pointe vers la page attachment, quand tu inseres ta galerie fais attention de cocher
    Lier les miniatures à : Page de fichier attaché

5 sujets de 1 à 5 (sur un total de 5)
  • Le forum ‘Utilisation spécifique de WordPress’ est fermé à de nouveaux sujets et réponses.