这是一个错误?
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调用中加载所有图像大小
答案 0 :(得分:0)
很奇怪......你试过用数组设置大小吗?
wp_get_attachment_image( $attachment_id, array(220,145)); // for 220x145
答案 1 :(得分:0)
确实是一个错误。我遇到了同样的问题,因为我们有类似的情况,我认为它与AJAX调用有关 - 但是谁知道为什么它会返回错误的尺寸。 但是 ,我找到了一个解决方法,虽然这是一个相当古老的问题,但我认为其他人可能会遇到此问题。
我的解决方案是:
首先,您使用wp_get_attachment_image_src获取图片的网址。
$image = wp_get_attachment_image_src($attachment_id, 'image size name');
(您可以使用get_posts()获取附件ID。)
然后,您可以在$image[0]
中找到图片的网址。所以我所做的就是放入正确的尺寸:
<img src="'.$image[0].'" width="960" height="300" />
它并不理想,但至少它有效。它可以在WP 3.5中修复,但我不知道,我还在使用3.4.2。
答案 2 :(得分:0)
不是 media.php 中editor_max_image_size
末尾的image_constrain_size_for_editor()
吗?众所周知,它会混淆wp_get_attachment_image()
的输出。
function bypass_editor_max_image_size(){
if(!empty($width) && !empty($height)){
return array($width, $height);
}else{
return;
}
}
然后在你的调用中添加/删除它以获取图像src和大小。
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'));