web-dev-qa-db-fra.com

Galerie shortcode - changer la taille de l'image du fichier de liens? (n'utilise pas d'image pleine grandeur par défaut)

J'utilise ceci pour ma galerie -

<?php echo do_shortcode('[gallery size="gallery-thumb" link="file"]'); ?>

et j'utilise la jquery fancyapps fancybox . Mais certaines images en taille réelle qui sont dans ma galerie sont vraiment grandes et prennent un temps infini à charger ...

Au lieu de cela, je veux que le fichier de lien dans le shortcode utilise ma taille d'image personnalisée ci-dessous ...

add_image_size( 'fancyapps-image', 1024, 1024 );

Quelqu'un peut-il aider à utiliser un autre plugin?




J'utilise un script similaire sur mon corps de message/page où les images sont insérées manuellement et alignées, etc. Ainsi, quelque chose de similaire pourrait sûrement fonctionner?

Cette combinaison de script appelle l’appel ajax et analyse en gros toutes les images de mes publications et modifie l’URL du lien à la taille 'fancyapps-image' ...

script

var raw_class, image_id = new Array();
$('.entry a img').each(function(i){
    var img_class = $(this).attr('class');
    if(img_class && img_class != undefined){ 
        raw_class = $(this).attr('class').split(" ");
        for(j=0;j<=raw_class.length-1;j++){
            if(raw_class[j].match(/wp-image-/))
                image_id[i]= raw_class[j].slice(9);
        }
    }
});

var image_ids = image_id.toString();
var data = { type: 'get_data', action: 'wp_get_large_image_url', data: image_ids }

$.post( wp_ajax, data, function(message){
    if(message){
        var raw_data = message.split(',');
        for(i=0;i<=raw_data.length-1;i++){
            var image_data = raw_data[i].split('%-');
            $('.wp-image-'+image_data[1]).parent('a').attr('href', image_data[0]);
        }
    }
});

admin-ajax.php call

<?php echo "var wp_ajax = '" . admin_url('admin-ajax.php') . "';" ?>

functions.php

function wp_large_image_data(){
    unset( $_POST['action'] );
    if($_POST['type'] == 'get_data'){
        $data = $_POST['data'];
        $image_ids = explode( ',',  $data );
        $image_large_url = array();
        foreach($image_ids as $image_id){
            if($image_id){
                $attachment_data = wp_get_attachment_image_src( $image_id, 'fancyapps-image' );
                $image_large_url[] = $attachment_data[0].'%-'.$image_id;
            }
        }
        $image_data = implode( "," , $image_large_url);
        echo $image_data;       
    }
    die;
}
add_action('wp_ajax_wp_get_large_image_url', 'wp_large_image_data');
add_action('wp_ajax_nopriv_wp_get_large_image_url', 'wp_large_image_data');


Toutes les idées seraient bien merci.

1
Joshc

Merci à @Hai

Ajoutez-le à votre fichier functions.php et il utilisera la version ‘fancyapps-image’ de l’image chaque fois que WordPress affiche un lien vers une image jointe. J'espère que ça aide.

function oikos_get_attachment_link_filter( $content, $post_id, $size, $permalink ) {
    // Only do this if we're getting the file URL
        if (! $permalink) {
            // This returns an array of (url, width, height)
            $image = wp_get_attachment_image_src( $post_id, 'fancyapps-image' );
            $new_content = preg_replace('/href=\'(.*?)\'/', 'href=\'' . $image[0] . '\'', $content );
            return $new_content;
        }
    }
    add_filter('wp_get_attachment_link', 'oikos_get_attachment_link_filter', 10, 4);

Code de http://oikos.org.uk/2011/09/tech-notes-using-resized-images-in-wordpress-galleries-and-lightboxes/

1
Joshc