web-dev-qa-db-fra.com

Changer le lien de l'image: wp_get_attachment_link

Quelqu'un peut-il m'aider à filtrer wp_get_attachment_link afin qu'une occurrence particulière de ce lien soit liée à une image de 'taille moyenne' ou d'une autre taille plutôt qu'à la taille réelle. J'ai les éléments suivants dans un modèle de page:

$args = array( 'post_type' => 'attachment', 'numberposts' => -1, 'post_status' => null, 'post_parent' => $post->ID ); 
$attachments = get_posts($args);
if ($attachments) {
    foreach ( $attachments as $attachment ) {
    echo wp_get_attachment_link( $attachment->ID , array(150,150) ); 
    }
}

Je peux ajouter un filtre pour ajouter une classe ou une rel, mais je ne parviens pas à modifier l’image de taille réelle par défaut (telle qu’elle a été téléchargée à l’origine) liée dans le modèle. une lightbox, mais si un utilisateur télécharge une très grande image (par exemple: 4000x4000 + pixels), le lien se chargera trop lentement et je ne veux pas que le public puisse télécharger une image de qualité d'impression à partir de la lightbox.

2
Aces

Je pense avoir répondu à ma propre question en quelque sorte ...

Comme j’utilisais un thème enfant d’Hybrid, j’ai activé l’extension Clean Gallery dans le fichier functions.php: add_theme_support( 'cleaner-gallery' );.

Ensuite, en fonction du sujet ici , j'ai créé mon propre filtre:

add_filter( 'cleaner_gallery_image', 'my_gallery_image', 10, 4 );
function my_gallery_image( $image, $id, $attr, $instance ) {

        $post = get_post( $id );
        $image_src = wp_get_attachment_image_src( $post->ID, 'medium' );
        $image_thumb = wp_get_attachment_image_src( $post->ID, 'Custom Thumb' );
        $title = esc_attr( $post->post_title );

        $image = "<a href='{$image_src[0]}'><img src='{$image_thumb[0]}' border='0'></a>";

    return $image;
}

Il y a encore des choses qui ne vont pas, comme le titre, mais cela répond à la question initiale, bien que je sois sûr que cela pourrait être amélioré car je vais plutôt à côté du siège de mon pantalon ...

1
Aces

Je ne sais pas si vous pouvez filtrer les liens au sein du contenu en PHP, mais vous pouvez utiliser jQuery pour remplacer le préfixe href de chacun des liens, en les sélectionnant en fonction des valeurs rel et class que vous avez mentionnées.

0
jjeaton

Vous pouvez spécifier la taille que vous souhaitez lier dans la fonction wp_get_attachment_link, le code que vous avez posté ne fonctionne-t-il pas?

Essayer:

$args = array( 'post_type' => 'attachment', 'numberposts' => -1, 'post_status' => null, 'post_parent' => $post->ID ); 
$attachments = get_posts($args);
if ($attachments) {
    foreach ( $attachments as $attachment ) {
        echo wp_get_attachment_link( $attachment->ID , 'medium', false ); 
    }
}
0
Mario