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

WordPress中$id变量未定义报错求助(functions.php第78行)

解决WordPress主题中Undefined variable $id的警告问题

问题根源

你在functions.php第78行直接调用了get_the_post_thumbnail($id, array(200,200));,这里有两个关键错误:

  • 变量$id完全没有定义,PHP找不到它的值,所以抛出警告
  • 这个函数不该直接写在全局作用域里,WordPress获取文章缩略图需要在文章循环内部或者有明确有效文章ID的上下文里执行,全局作用域下没有当前文章的环境,自然拿不到正确的ID

另外你的代码还有个小问题:add_theme_support( 'post-thumbnails' );的位置不对,应该放在after_setup_theme的回调函数中,确保主题初始化时正确加载缩略图支持。

修复方案

1. 修正主题缩略图支持的代码

把add_theme_support( 'post-thumbnails' );移到mytheme_custom_thumbnail_size函数内,这样主题启动时会正确初始化缩略图功能:

add_filter('jpeg_quality', function($arg){return 92;});
add_action( 'after_setup_theme', 'mytheme_custom_thumbnail_size' );
function mytheme_custom_thumbnail_size(){
    add_theme_support( 'post-thumbnails' ); // 移到这里
    add_image_size( 'thumb-small', 100, 56, true );
    add_image_size( 'thumb-medium', 190, 9999 );
    add_image_size( 'thumb-large', 400, 225 );
}

2. 正确调用文章缩略图

get_the_post_thumbnail的调用位置很重要,分两种情况处理:

  • 在文章循环中(比如模板文件single.php、index.php里):不需要传ID,函数会自动使用当前文章的ID,还可以加判断避免无缩略图时出错:
    // 放在循环内部使用
    if (has_post_thumbnail()) {
        echo get_the_post_thumbnail(null, array(200,200));
    }
    
  • 在自定义函数中(必须在有文章上下文时调用):先获取有效的文章ID,再调用函数:
    // 确保当前有文章上下文时执行
    $current_post_id = get_the_ID();
    if ($current_post_id && has_post_thumbnail($current_post_id)) {
        echo get_the_post_thumbnail($current_post_id, array(200,200));
    }
    

⚠️ 重点:绝对不要在functions.php的全局作用域直接调用get_the_post_thumbnail,这里没有文章环境,只会触发错误。

3. 临时隐藏警告(仅应急用)

如果需要快速暂时消除警告提示,可以修改wp-config.php关闭调试显示:

define('WP_DEBUG', false);
define('WP_DEBUG_DISPLAY', false);

但这只是隐藏问题,永远优先修复代码本身。

内容的提问来源于stack exchange,提问作者Constantino_A_

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 17:40:29