Answers:
假设问题是关于wp_get_attachment_image_src
。
它也可能与有关wp_get_attachment_link
,但是尽管相关,但此分析未包括在内。
在回答以下问题时就意识到了这个问题:如何在Media Manager中查看所有WP生成的缩略图?。
参考它以查看有关此Question问题的有效代码。
它导致了这个WordPress论坛主题。
函数wp_get_attachment_image_src($ attachment_id,$ size,$ icon)返回一个包含以下内容的数组:
[0] => url
[1] => width
[2] => height
[3] => is intermediate
如果[3]
为假,original
则返回图像数据。
双方 wp_get_attachment_image_src
并wp_get_attachment_link
依靠在功能image_downsize
,内置/wp-includes/media.php
。
这就是返回这4个项目的数组的地方。
我不确定这一点,但我知道您可以使用php的getimagesize()函数,如下所示:
//This must be in one loop
if(has_post_thumbnail()) {
$wanted_width = 300;
$wanted_height = 150;
$id = get_post_thumbnail_id()
$image = wp_get_attachment_image_src($id);
if ($image){
list($width, $height) = getimagesize($image[0]);
if (($wanted_height = $width) && ($wanted_height = $height)){
the_post_thumbnail();
}
else{
//default when no image
echo '<img src="'.get_bloginfo("template_url").'/images/img-default.png" />';
}
}
else{
//default when no image
echo '<img src="'.get_bloginfo("template_url").'/images/img-default.png" />';
}
} else {
//default when no image
echo '<img src="'.get_bloginfo("template_url").'/images/img-default.png" />';
}
而且我知道这不是直接解决问题的方法,但是您可以使用一个名为 AJAX缩略图重建的插件-该插件可让您重建帖子缩略图。如果您已经上传帖子缩略图后添加了add_image_size(),则很有用。
这是我仅在存在请求的大小时才能够显示缩略图的方式:
if ( has_post_thumbnail() ) {
$imgdata = wp_get_attachment_image_src( get_post_thumbnail_id(), 'thumbnail' ); //change thumbnail to whatever size you are using
$imgwidth = $imgdata[1]; // thumbnail's width
$wanted_width = 300; //change this to your liking
if ( ($imgwidth < $wanted_width ) ) {
the_post_thumbnail();
} else {
//do whatever you want
}
}
有一个插件可以自动为您自动创建图像大小(如果不存在)。http://austinmatzko.com/wordpress-plugins/filosofo-custom-image-sizes/
我自己还不需要使用此插件。但这值得一试。关于在WP核心中添加类似功能的讨论,也许在3.2 http://core.trac.wordpress.org/ticket/15311中
最好的方法是使用Wordpress的内置“ get_intermediate_image_sizes”函数以数组形式返回图像大小的完整列表,然后进行浏览。
show_image_by_size( 10470, 'custom_size' );
function show_image_by_size( $_post_id, $_desired_size ) {
$_sizes = get_intermediate_image_sizes();
$_thumbnail_id = get_post_thumbnail_id( $_post_id );
$_image_size = ( in_array( $_desired_size , $_sizes ) ) ? $_desired_size : 'full';
$image = wp_get_attachment_image_src( $_thumbnail_id, $_image_size );
echo '<img src="' . esc_url( $image[0] ) . '" />';
}
也许这会有所帮助
<?php
//This must be in a loop
if(has_post_thumbnail()) {
the_post_thumbnail();
} else {
echo '<img src="'.get_bloginfo("template_url").'/images/img-default.png" />';
}
?>
来自:http : //codex.wordpress.org/Function_Reference/has_post_thumbnail
我使用类似的方法来检查图像大小是否存在:
if (function_exists('has_post_thumbnail') && has_post_thumbnail('medium')) {
//// code to display thumbnail goes here
}
else {
/// otherwise do this
}
希望它能帮助您前进。