您现在的位置是:首页 >技术杂谈 >wordpress图片上传技术整理网站首页技术杂谈

wordpress图片上传技术整理

Robin罗兵 2024-06-14 17:17:46
简介wordpress图片上传技术整理

一、wordpress 2.9版本以后引入了特色图像功能,如果你的wordpress主题支持该功能,我们在这里介绍一下特色图片的调用,如何在首页、分类页等列表页面特定位置显示指定的文章不同尺寸缩略图。

如果你使用的wordrpress主题没有特色图片功能,可以通过以下方法设置。

1、在主题文件夹下的functions.php文件中加入代码:

if ( function_exists( 'add_theme_support' ) ) {  
     add_theme_support( 'post-thumbnails' );  
}

2、在需要显示特色图像的地方插入以下代码

<?php if ( has_post_thumbnail()) : ?>
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>" >
<?php the_post_thumbnail(); ?>
</a>
<?php endif; ?>

二、上传图片涉及的表

post表:post_type: attachment

postmeta表:_wp_attachment_metadata、_wp_attached_file、_thumbnail_id

三、wordpress前台调用图片方法

wordpress特色图片相关函数:
<?php the_post_thumbnail(); ?>
<?php echo post_thumbnail(344, 128); ?>
get_post_thumbnail_id():获取文章缩略图 ID
get_the_post_thumbnail_url():获取文章缩略图链接
the_post_thumbnail_url():这个函数直接显示文章缩略图链接
get_the_post_thumbnail():获取文章缩略图而不是输出它 

下面是关于引用wordpress图片的代码,一共是5中格式:
<!--特色图像引用:完整尺寸-->
<?php $full_image_url = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'full'); echo $full_image_url[0]; ?>
<!--特色图像引用:小尺寸-->
<?php $thumbnail_image_url = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'thumbnail'); echo $thumbnail_image_url[0]; ?>
<!--特色图像引用:中尺寸-->
<?php $medium_image_url = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'medium'); echo $medium_image_url[0]; ?>
<!--特色图像引用:大尺寸-->
<?php $large_image_url = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'large'); echo $large_image_url[0]; ?>
<!--特色图像引用:自定义尺寸-->
<?php $array_image_url = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), array(200,200)); echo $array_image_url[0]; ?>


如果想要系统截取的其他尺寸的图片,对照上面的代码就可,然后把img的src里面的代码换一下就可以了。
<?php if ( has_post_thumbnail() ) { ?>
<a href="<?php the_permalink(); ?>" target="_blank" title="<?php the_title(); ?>">
//特色图片
<img alt="<?php the_title(); ?>" src="<?php $full_image_url = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'full'); echo $full_image_url[0]; ?>"/>
</a>
<?php } else {?>
<a href="<?php the_permalink(); ?>" target="_blank" title="<?php the_title(); ?>">
//暂无图片
<img title="<?php the_title(); ?>" src="<?php bloginfo('template_url'); ?>/images/morentu.png" />
</a>
<?php } ?>


特色图像缩略图尺寸参数设置:修改the_post_thumbnail(); 的参数即可。
1. the_post_thumbnail(‘thumbnail’);       // 小缩略图 (默认 150px x 150px )
2. the_post_thumbnail(‘medium’);          // 中缩略图 (默认 300px x 300px )-自适应图像比例
3. the_post_thumbnail(‘large’);           // 大缩略图 (默认 640px x 640px )-自适应图像比例
4. the_post_thumbnail(‘full’);            // 完整尺寸
5. the_post_thumbnail( array(100,100) );  // 自定义
其中 thumbnail、medium、large的默认尺寸在后台-设置-媒体中定义

四、_wp_attachment_metadata字符串表示涵义(由图片元数据的数组进行序列化保存到数据库,由serialize函数实现)

s表示string字符串,i表示int整数,a表示后面的元素个数

奇数位表示键名,其中s开头的那一串,比如s:5:"width";  里面的5是因为"width"一共是5个字符

偶数位表示键值,其中i表示int整数

a:3:{s:5:"width";i:1024;s:6:"height";i:768;s:4:"file";s:10:"123456.jpg";}里面有三对,所以a后面是3,

由wp_generate_attachment_metadata($attachment_id, $file)函数生成

$attachment_id (int) (必填) 要处理的附件ID。默认值: None

$file (string) (必填) 文件在服务器上的位置。使用绝对路径而不是文件的URI。文件必须在uploads目录中。请参阅wp_upload_dir() 默认值: None

参考资料:

1、黄聪:WordPress: 使用 wp_insert_attachment 上传附件

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。