WordPress特色图片尺寸限制问题:错误不显示+无图无法阻止发布
解决方案:限制文章特色图片尺寸并强制设置
一、修复错误提示显示问题
之前的代码仅移除了不符合尺寸的图片,但未正确触发后台通知系统。可以通过会话存储临时错误信息,配合admin_notices钩子实现提示:
// 存储错误消息到临时会话 function set_featured_image_error($message) { if (!session_id()) { session_start(); } $_SESSION['featured_image_error'] = $message; } // 在后台显示错误消息 function display_featured_image_error() { if (!session_id()) { session_start(); } if (isset($_SESSION['featured_image_error'])) { echo '<div class="notice notice-error is-dismissible"> <p>' . esc_html($_SESSION['featured_image_error']) . '</p> </div>'; unset($_SESSION['featured_image_error']); } } add_action('admin_notices', 'display_featured_image_error');
在你移除不符合尺寸图片的逻辑中,调用set_featured_image_error('特色图片尺寸必须为1000px×450px,请重新上传!')即可触发提示。
二、实现未设置特色图片时阻止发布
通过save_post钩子拦截文章保存操作,同时完成无图检查和尺寸验证:
function enforce_featured_image_rules($post_id) { // 跳过自动保存、修订版本 if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return; if (wp_is_post_revision($post_id)) return; // 验证用户权限(可根据需求调整) if (!current_user_can('edit_post', $post_id)) return; // 检查是否设置特色图片 if (!has_post_thumbnail($post_id)) { set_featured_image_error('必须设置符合尺寸的特色图片才能发布!'); wp_redirect(get_edit_post_link($post_id, 'redirect')); exit; } // 验证图片尺寸 $thumbnail_id = get_post_thumbnail_id($post_id); $image_data = wp_get_attachment_image_src($thumbnail_id, 'full'); $width = $image_data[1]; $height = $image_data[2]; if ($width != 1000 || $height != 450) { delete_post_meta($post_id, '_thumbnail_id'); set_featured_image_error('特色图片尺寸必须为1000px×450px,请重新上传!'); wp_redirect(get_edit_post_link($post_id, 'redirect')); exit; } } add_action('save_post', 'enforce_featured_image_rules');
代码说明
- 会话存储错误信息:确保页面跳转后错误提示仍能正常显示,避免因刷新丢失提示。
- 拦截保存流程:通过
wp_redirect中断发布/更新操作,强制返回编辑页面,同时给出明确错误原因。 - 可扩展调整:如果仅需针对特定文章类型限制,可添加
if (get_post_type($post_id) != 'post') return;(将post替换为目标文章类型)。
内容的提问来源于stack exchange,提问作者Charles
相关产品推荐
相关产品推荐

