wp_get_attachment_image возвращает другой размер изображения - PullRequest
2 голосов
/ 21 февраля 2012

Это ошибка?

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

Тот же код, который вызывается в шаблоне и в вызове AJAX, возвращает тот же SRC изображения, но разную ширину и высоту изображения.

дамп из шаблона вызова:

<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">

дамп из 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">

Я в замешательстве, что не так?

index.php код

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

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

<?php endwhile; endif; ?>

post.php код

<div class="container">

<?php

  $theme->theme_post->display_post_element( $post_type, $post_size, $post);

?>
</div>

код функции display_post_element

    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;
        }
}

загрузка сообщений с помощью кода вызова 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;
}

я определил размеры изображения в functions.php в конструкторе тем. я сбросил get_intermediate_image_sizes () и все размеры изображений загружаются в вызов AJAX

Ответы [ 3 ]

0 голосов
/ 25 июля 2013

Это действительно ошибка. Я столкнулся с той же проблемой, и, поскольку у нас было похожее обстоятельство, я полагаю, что это как-то связано с вызовом AJAX - хотя кто знает, почему он возвращает неправильные измерения. Но , я нашел обходной путь, и хотя это довольно старый вопрос, я думал, что кто-то другой может столкнуться с этой проблемой.

Мое решение было таким:

Сначала вы получаете URL изображения с помощью wp_get_attachment_image_src .

$image = wp_get_attachment_image_src($attachment_id, 'image size name');

(Вы можете получить идентификаторы вложений с помощью get_posts () .)

Затем у вас есть URL-адрес изображения в $image[0]. Итак, то, что я сделал, было помещено в правильные размеры:

<img src="'.$image[0].'" width="960" height="300" />

Это не идеально, но по крайней мере это работает. Это может быть исправлено в WP 3.5, но я не знаю, я все еще использую 3.4.2.

0 голосов
/ 19 марта 2015

Разве это не editor_max_image_size в конце image_constrain_size_for_editor() в media.php ? Известно, что он портит вывод wp_get_attachment_image().

function bypass_editor_max_image_size(){
    if(!empty($width) && !empty($height)){
        return array($width, $height);
    }else{
        return;
    }
}

Затем добавьте / удалите это вокруг вашего звонка, чтобы получить размер и размер изображения.

add_filter('editor_max_image_size', array($this, 'bypass_editor_max_image_size'));
$image = wp_get_attachment_image_src($photo, $size);
remove_filter('editor_max_image_size', array($this, 'bypass_editor_max_image_size'));
0 голосов
/ 23 мая 2012

Странно ... Вы пытались установить размер с помощью массива?

wp_get_attachment_image( $attachment_id, array(220,145)); // for 220x145
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...