问题我想要height
和width
中的属性img
文章、页面或自定义文章类型的特征图像的元素。
环境我有一个基于BlankSlate theme.新的二零一五主题也不显示属性在“设置/媒体”中,我没有更改默认图像大小功能。php包含add_theme_support( \'post-thumbnails\' );
.我没有自定义图像大小
在“设置/媒体”中,“将缩略图裁剪为精确尺寸”框未选中。因此,我有一些缩略图,它们不完全是150像素x 150像素Edit: 我仍然需要来自特色图像功能的其他自动属性,例如alt
和class
.<img src="http://i2.wp.com/www.hunterthinks.com/wp-content/uploads/2014/11/favicon-160x160.png?fit=150%2C150" class="attachment-thumbnail wp-post-image" alt="HunterThinks.com">
作为一个理想主义者,我通常想要高度和宽度,但高度的缺乏导致了我当前主题的布局问题。如您所见,最后一幅特色图片超出了
<section>
元素,看起来很糟糕。
标题的当前代码。php很大,所以我会跳过它,除非有人认为我的问题在那里。
category.php
<?php get_header(); ?>
<section>
<header><h1><?php _e( \'Main page: \', \'goldenratio\' ); ?><?php single_cat_title(); ?></h1></header>
<?php if ( \'\' != category_description() ) echo apply_filters( \'archive_meta\', category_description() ); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php get_template_part( \'entry\', \'summary\' ); ?> # FEATURED IMAGE COMES FROM HERE
<?php endwhile; endif; ?>
<?php get_template_part( \'nav\', \'below\' ); ?>
</section>
<?php get_footer(); ?>
entry-summary.php
<?php the_title( \'<h1 class="clear">\', \'</h1>\' ); ?>
<?php if ( has_post_thumbnail() ) {
echo \'<figure class="clear-right"><a href="\';
the_permalink();
echo \'">\';
the_post_thumbnail( \'thumbnail\' );
echo \'</a></figure>\';
} ?>
<?php the_excerpt(); ?>
<a href="<?php the_permalink(); ?>" title="Go to the page">⇒ Read ⇒</a>
class="clear-right"
我无法想象为什么这个类会影响事情,但万一我错了,我就把它包括在这里。
.clear-right{
clear:right;
float:right;
margin-bottom:1em;
margin-left:1.827%;}
尝试失败我尝试使用
wp_get_attachment_image_src()
但我想我没有正确编码,因为我甚至无法显示图像。我没有我尝试过的代码示例我试着用
the_post_thumbnail( $size, $attr )
以及调整
$attr
数组基于中的文档
wp_get_attachment_image()
但我很肯定这永远不会奏效代码、概念和参考有人能帮我处理我缺少的代码、概念和参考资料吗。我有一种感觉,当我知道答案时,我会觉得有点傻,但我确实想解决这个问题。
提前谢谢。
最合适的回答,由SO网友:Alex Sancho 整理而成
您可以使用“”收集图像属性wp_get_attachment_metadata,请参见以下示例作为起点
function mytheme_post_thumbnail( $size = \'post-thumbnail\', $attr = \'\', $post_id = null ) {
if ( has_post_thumbnail( $post_id ) ) {
$meta = wp_get_attachment_metadata( get_post_thumbnail_id( $post_id ) );
$args[\'width\'] = $meta[\'sizes\'][$size][\'width\'];
$args[\'height\'] = $meta[\'sizes\'][$size][\'height\'];
$args[\'alt\'] = isset( $attr[\'alt\'] ) ? $attr[\'alt\'] : apply_filters( \'post_title\', get_post( $post_id )->post_title );
$args[\'title\'] = isset( $attr[\'title\'] ) ? $attr[\'title\'] : apply_filters( \'post_title\', get_post( $post_id )->post_title );
$args[\'class\'] = isset( $attr[\'class\'] ) ? $attr[\'class\'] : \'\';
$thumbnail = wp_get_attachment_image( get_post_thumbnail_id( $post_id ), $size, false, $args);
echo $thumbnail;
} else {
printf( \'<img src="%1$s/images/default-thumb.png" alt="%2$s" />\', get_template_directory_uri(), the_title_attribute( [ \'echo\' => false ] ) );
}
}
SO网友:Privateer
我通常会使用以下内容:
if ( current_theme_supports(\'post-thumbnails\') && has_post_thumbnail() ) {
$post_thumb_id = get_post_thumbnail_id($id);
$image_data = wp_get_attachment_image_src($post_thumb_id, \'thumbnail\');
$attr_title = esc_attr($title);
$image = <<<HTML
<div class="thumbnail"><img id="attachment_{$post_thumb_id}" src="{$image_data[0]}" width="{$image_data[1]}" height="{$image_data[2]}" alt="{$attr_title}" /></div>
HTML;
} else {
$image = \'\';
}
使用您的代码,请尝试:
<?php the_title( \'<h1 class="clear">\', \'</h1>\' ); ?>
<?php
if ( has_post_thumbnail() ) {
echo \'<figure class="clear-right"><a href="\';
the_permalink();
echo \'">\';
# The next line grabs the image source meta using the post thumbnail id
$image_data = wp_get_attachment_image_src(get_post_thumbnail_id(), \'thumbnail\');
$attr_title = esc_attr( get_the_title() );
# image_data is an array ( src => \'...\', \'width\' => int, \'height\' => \'int\', ...)
# so you can grab $image_data[0] as the source, $image_data[1] as the width, and $image_data[2] as the height
$image_tag = <<<HTML
<img src="{$image_data[0]}" width="{$image_data[1]}" height="{$image_data[2]}" alt="{$attr_title}" />
HTML;
#now that tag is built, just draw it out.
echo $image_tag;
echo \'</a></figure>\';
} ?>
<?php the_excerpt(); ?>
<a href="<?php the_permalink(); ?>" title="Go to the page">⇒ Read ⇒</a>
这应该能帮你找到你想要的东西。
SO网友:shyammakwana.me
wp_get_attachment_image 此功能可以帮助您。
使用此函数,您的文件如下所示。。。
entry-summary.php
<?php the_title( \'<h1 class="clear">\', \'</h1>\' ); ?>
<?php if ( has_post_thumbnail() ) {
$attachment_id = get_post_thumbnail_id( get_the_ID() );
$default_attr = array(
\'src\' => $src,
\'class\' => "attachment-$size",
\'alt\' => trim(strip_tags( get_post_meta($attachment_id, \'_wp_attachment_image_alt\', true) )),
);
echo \'<figure class="clear-right"><a href="\';
the_permalink();
echo \'">\';
//the_post_thumbnail( \'thumbnail\' );
wp_get_attachment_image( $attachment_id, \'thumbnail\',1 , $default_attr );
echo \'</a></figure>\';
} ?>
<?php the_excerpt(); ?>
<a href="<?php the_permalink(); ?>" title="Go to the page">⇒ Read ⇒</a>
要获取高度和宽度,请使用
wp_get_attachment_metadata
沿代码上方宽度的函数。
我没有从我这边测试代码,只是从codex得到了一个示例。希望这能奏效。
更新2:
$attachment_id = get_post_thumbnail_id(get_the_ID());
$metadata = wp_get_attachment_metadata($attachment_id);
$height = $metadata[\'height\'];
$width = $metadata[\'width\'];
$alt = trim(strip_tags( get_post_meta($attachment_id, \'_wp_attachment_image_alt\', true) )) ;
$src = wp_get_attachment_url( $attachment_id );
$class = \'attachment-\'.$attachment_id;
echo \'<img src="\'.$src.\'" height="\'.$height.\'" width="\'.$width.\'" alt="\'.$alt.\'" class="\'.$class.\'" />\';
更新3:要获取缩略图的高度和宽度,请按如下所示更改代码行。
$height = $metadata[\'sizes\'][\'thumbnail\'][\'height\'];
$width = $metadata[\'sizes\'][\'thumbnail\'][\'width\'];
SO网友:Aron
EDIT:默认情况下,WordPress在上传拇指时会将拇指裁剪为150x150px。当您取消选中中的框时Settings>Media WordPress不会重新生成现有缩略图,它只会在上载新图像时生成成比例的图像。简言之,我认为您的问题不在于用于显示缩略图的代码,而在于图像本身。
但是,要以html格式输出具有宽度、高度、alt和类的缩略图图像,以下代码将生成所需的结果:
$post_id = $post->ID; // current post id
$thumb_id = get_post_thumbnail_id($post_id);
$size = \'thumbnail\';
if ( \'\' != get_the_post_thumbnail($post_id) ) { // checks we have a thumbnail
echo wp_get_attachment_image($thumb_id, $size);
}
If the output result using my code is still 150px by 150px please try re-uploading the image.