web-dev-qa-db-fra.com

wp_get_attachment_url avec une taille d'image spécifique?

J'utilise Woocommerce pour un e-shop de plus de 1800 produits. Woocommerce est livré avec un plugin PrettyPhoto lightbox intégré. Par défaut, il charge la taille d'image Wordpress d'origine lorsque vous cliquez pour agrandir l'image dans la lightbox.

Woocommerce appelle cette image originale dans le modèle 'product-image.php'. Je peux modifier celui-là. La variable $ image_link appelle la taille d'origine. Je voudrais appeler une taille personnalisée que j'ai déjà faite. Je ne sais tout simplement pas comment l'appeler. J'ai passé plus d'une journée à chercher de la documentation, des forums et des sites, mais je ne le trouve pas.

J'ai besoin de modifier $ image_link pour qu'il appelle ma taille d'image personnalisée (que j'ai ajoutée via add_image_size). Mais comment? Je sais que ce sont les bases de Wordpress mais je suis incapable de le faire ...

Exemple de mon site (cliquez pour agrandir, il montre une image réduite de 1600px, mais je veux une plus petite): http://www.affichesmarci.com/shop/the-railys-cycling-act/

<?php
    if ( has_post_thumbnail() ) {

        $image              = get_the_post_thumbnail( $post->ID, apply_filters( 'single_product_large_thumbnail_size', 'shop_single' ) );

        $image_title        = esc_attr( get_the_title( get_post_thumbnail_id() ) );
        $image_link         = wp_get_attachment_url( get_post_thumbnail_id() );

        $attachment_count   = count( $product->get_gallery_attachment_ids() );

        if ( $attachment_count > 0 ) {
            $gallery = '[product-gallery]';
        } else {
            $gallery = '';
        }

        echo apply_filters( 'woocommerce_single_product_image_html', sprintf( '<a href="%s" itemprop="image" class="bigbox woocommerce-main-image zoom" title="%s" rel="prettyPhoto' . $gallery . '">%s</a>', $image_link, $image_title, $image ), $post->ID );

    } else {

        echo apply_filters( 'woocommerce_single_product_image_html', sprintf( '<img src="%s" alt="Placeholder" class="bigbox" />', woocommerce_placeholder_img_src() ), $post->ID );

    }
?>

<?php do_action( 'woocommerce_product_thumbnails' ); ?>
1
Bart De Vuyst

Vous pouvez utiliser le filtre Woocommerce single_product_large_thumbnail_size comme indiqué dans le code suivant pour appliquer une taille d'image personnalisée au produit.

Dans le code ci-dessus, remplacez ceci

apply_filters( 'single_product_large_thumbnail_size', 'shop_single' )

avec ça

apply_filters( 'single_product_large_thumbnail_size', 'custom_thumbnail_size' );
1
Vinod Dalvi

Si vous pouvez modifier le code dans votre question, utilisez wp_get_attachment_image_src au lieu de wp_get_attachment_url. Vous pouvez spécifier la taille de l'image que vous voulez comme second argument.

$image = wp_get_attachment_image_src(get_post_thumbnail_id(), 'your_custom_size');
if ($image) {
  list($imageUrl, $imageWidth, $imageHeight) = $image;
  // do stuff with $imageUrl, etc
} else {
  // couldn't find the image, act accordingly
}
1
chrisguitarguy