您的位置:首页 >WordPress 图片尺寸限制排除方法
发布于2026-04-21 阅读(0)
扫一扫,手机访问

本文教你如何在 WordPress 中为供应商用户设置图片上传尺寸限制,并灵活排除特定页面(如店铺首页、Logo 上传页),避免误拦合规图片。通过条件判断结合 wp_handle_upload_prefilter 钩子,实现精准控制。
本文教你如何在 WordPress 中为供应商用户设置图片上传尺寸限制,并灵活排除特定页面(如店铺首页、Logo 上传页),避免误拦合规图片。通过条件判断结合 `wp_handle_upload_prefilter` 钩子,实现精准控制。
在使用 WCMP(WooCommerce Multi-Vendor Marketplace)等多供应商插件时,常需对供应商上传的图片施加尺寸约束——例如强制主图不低于 1080×1080 像素,同时防止超大图(如超过 12000×12000)影响性能。但若全局启用该限制,会误伤「店铺 Logo」「横幅 Banner」等本应允许小尺寸上传的场景。
因此,关键在于动态判断当前上传上下文:仅在非白名单页面(如商品编辑页、店铺设置页)生效校验,而在 wcmp_before_shop_front 触发的店铺首页、或特定页面(如 ID=24 的 Logo 上传页)中跳过验证。
以下是优化后的完整解决方案(推荐写入主题的 functions.php 或专用插件):
function wcmp_vendor_image_resolution_check($file) {
// 1. 仅对 WCMP 供应商用户执行检查
if (!is_user_wcmp_vendor(get_current_user_id())) {
return $file;
}
// 2. 【核心】排除特定页面:根据实际需求任选其一(取消注释并配置)
// ✅ 方案 A:排除指定页面 ID(如 Logo/Banner 上传页 ID = 24)
// if (is_page(24)) {
// return $file;
// }
// ✅ 方案 B:排除特定页面模板(如 custom-banner-upload.php)
// if (is_page_template('custom-banner-upload.php')) {
// return $file;
// }
// ✅ 方案 C:排除 WCMP 店铺首页(推荐 —— 基于问题中提供的钩子语义)
// 注意:wp_handle_upload_prefilter 在前端上传时触发,此时无法直接用 do_action,
// 但我们可通过检测当前请求是否处于店铺前台来间接判断
if (function_exists('wcmp_is_store_page') && wcmp_is_store_page()) {
return $file;
}
// ✅ 方案 D:更通用的 URL 路径判断(适用于无函数支持的环境)
// $current_url = esc_url_raw($_SERVER['REQUEST_URI']);
// if (strpos($current_url, '/vendor-dashboard/') !== false ||
// strpos($current_url, '/store/') !== false) {
// return $file;
// }
// 3. 执行尺寸校验
$image_info = getimagesize($file['tmp_name']);
if (!$image_info) {
return $file; // 非图片文件,跳过校验
}
$width = $image_info[0];
$height = $image_info[1];
$min = ['width' => 1080, 'height' => 1080];
$max = ['width' => 12000, 'height' => 12000];
$too_small = '图片尺寸过小,请上传宽度和高度均不小于 1080 像素的图片。';
$too_large = '图片尺寸过大,请上传宽度和高度均不超过 12000 像素的图片。';
if ($width < $min['width'] || $height < $min['height']) {
$file['error'] = $too_small;
return $file;
}
if ($width > $max['width'] || $height > $max['height']) {
$file['error'] = $too_large;
return $file;
}
return $file;
}
add_filter('wp_handle_upload_prefilter', 'wcmp_vendor_image_resolution_check');通过以上结构化实现,你既能保障平台内容质量,又赋予供应商在必要场景下的操作灵活性,真正实现“有约束的自由”。
下一篇:漫天星漫画更新 无广告绿色版上线
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9