You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 19:49:53