web-dev-qa-db-fra.com

wp_get_attachment_image retourne une taille d'image différente

C'est un bug?

wp_get_attachment_image( $attachment_id, 'post-thumb-size-small');

Le même code, appelé dans le modèle et dans l'appel AJAX, renvoie la même image SRC, mais une largeur et une hauteur différentes.

dumb from template call:

<img width="286" height="189" src="http://localhost/site/files/2012/02/post-image-31-286x189.jpg" class="attachment-post-thumb-size-small" alt="post-image-3" title="post-image-3">

dump de l'appel AJAX

<img width="220" height="145" src="http://localhost/site/files/2012/02/post-image-31-286x189.jpg" class="attachment-post-thumb-size-small" alt="post-image-3" title="post-image-3">

je suis confus, qu'est-ce qui ne va pas?

code index.php

    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>

    <?php include 'post.php'; ?>

    <?php endwhile; endif; ?>

code post.php

<div class="container">

<?php
if( in_array( $post_type, array( 'audio', 'video', 'quote', 'link'))) {
  $theme->theme_post->display_post_element( $post_type, $post_size, $post);
}
?>
</div>

display_post_element code de la fonction

    function display_post_element( $post_type, $post_size, $post) {
$attachment_id = get_post_meta( $post->ID, '_view_attachment_id', true);
        if( $post_type == 'single_image') {
            $img = wp_get_attachment_image_src( $attachment_id, 'full');

            if( is_array( $img)):                
            ?>
            <div class="preview-thumb">
                <a href="<?php echo $img[0]; ?>" class="lightbox"><?php echo wp_get_attachment_image( $attachment_id, 'post-thumb-size-' . $post_size); ?></a>
                <a href="<?php echo $img[0]; ?>" class="lightbox zoom"></a>
            </div>
            <?php
            endif;
        }
}

charger les messages avec le code d'appel ajax:

function load_posts_ajax() {
    global $post;
    $query_string = $_POST['query_string'];

    query_posts( $query_string . '&posts_per_page=' . get_option( 'posts_per_page') . '&post_status=publish&offset=' . (int)$_POST[ 'off']);

    if ( have_posts() ) : while ( have_posts() ) : the_post();
        include TEMPLATEPATH . '/post.php';
    endwhile; endif;

    die;
}
4
user12859

Poignée intégrée dans les tailles à droite

J'ai écrit une classe qui traite toutes les choses différentes pour les tailles d'image intégrées.

  1. Pour redéfinir les tailles intégrées, utilisez une classe étendue (le fichier supérieur dans la source liée)
  2. Pour annuler la définition d'une classe et ignorer complètement son utilisation, définissez simplement w & h sur 0.

http://static.steffenvogel.de/wp-content/uploads/2011/07/octocat_construction.gif

Cliquez sur l'octocat pour voir le Gist :)

1
kaiser