挂钩到 Wordpress 图片上传
Hook into Wordpress image upload
对于我的 Wordpress 网站,我想在用户上传图片时以编程方式自动生成额外的照片尺寸。我希望这张照片也出现在 媒体库中。
我写了一个小插件,我激活它来连接到上传操作。 我的问题是,我应该挂钩哪个 wp 上传操作来生成上传图片的这个额外大小。
欢迎获取当前上传的示例和编写额外的图像条目。
谢谢!
你可以试试wp_handle_upload_prefilter:
add_filter('wp_handle_upload_prefilter', 'custom_upload_filter' );
function custom_upload_filter( $file ){
$file['name'] = 'wordpress-is-awesome-' . $file['name'];
return $file;
}
按照上面的步骤挂钩上传操作,并执行一些生成额外图像的操作:
function generate_image($src_file, $dst_file) {
$src_img = imagecreatefromgif($src_file);
$w = imagesx($src_img);
$h = imagesy($src_img);
$new_width = 520;
$new_height = floor($new_width * $h / $w);
if(function_exists("imagecopyresampled")){
$new_img = imagecreatetruecolor($new_width , $new_height);
imagealphablending($new_img, false);
imagecopyresampled($new_img, $src_img, 0, 0, 0, 0, $new_width, $new_height, $w, $h);
} else {
$new_img = imagecreate($new_width , $new_height);
imagealphablending($new_img, false);
imagecopyresized($new_img, $src_img, 0, 0, 0, 0, $new_width, $new_height, $w, $h);
}
imagesavealpha($new_img, true);
imagejpeg($new_img, $dst_file);
imageDestroy($src_img);
imageDestroy($new_img);
return $dst_file;
}
对于我的 Wordpress 网站,我想在用户上传图片时以编程方式自动生成额外的照片尺寸。我希望这张照片也出现在 媒体库中。
我写了一个小插件,我激活它来连接到上传操作。 我的问题是,我应该挂钩哪个 wp 上传操作来生成上传图片的这个额外大小。
欢迎获取当前上传的示例和编写额外的图像条目。
谢谢!
你可以试试wp_handle_upload_prefilter:
add_filter('wp_handle_upload_prefilter', 'custom_upload_filter' );
function custom_upload_filter( $file ){
$file['name'] = 'wordpress-is-awesome-' . $file['name'];
return $file;
}
按照上面的步骤挂钩上传操作,并执行一些生成额外图像的操作:
function generate_image($src_file, $dst_file) {
$src_img = imagecreatefromgif($src_file);
$w = imagesx($src_img);
$h = imagesy($src_img);
$new_width = 520;
$new_height = floor($new_width * $h / $w);
if(function_exists("imagecopyresampled")){
$new_img = imagecreatetruecolor($new_width , $new_height);
imagealphablending($new_img, false);
imagecopyresampled($new_img, $src_img, 0, 0, 0, 0, $new_width, $new_height, $w, $h);
} else {
$new_img = imagecreate($new_width , $new_height);
imagealphablending($new_img, false);
imagecopyresized($new_img, $src_img, 0, 0, 0, 0, $new_width, $new_height, $w, $h);
}
imagesavealpha($new_img, true);
imagejpeg($new_img, $dst_file);
imageDestroy($src_img);
imageDestroy($new_img);
return $dst_file;
}