WordPress页面条件加载的JS与CSS文件无法加载问题求助
排查WordPress条件加载CSS/JS失效的通用方案
1. 先确认页面判定逻辑准不准
别光盯着is_page('blog')加没加,先搞清楚当前页面到底符合哪个条件:在目标页面的主题header.php里临时加段调试代码,刷新页面看输出:
echo '页面ID: ' . get_the_ID() . '<br>'; echo '页面Slug: ' . get_post_field('post_name', get_the_ID()) . '<br>'; echo '匹配is_page("blog")吗?' . var_export(is_page('blog'), true) . '<br>'; echo '匹配is_home()吗?' . var_export(is_home(), true) . '<br>'; echo '匹配is_archive()吗?' . var_export(is_archive(), true) . '<br>';
有可能你以为的博客页slug不是blog,或者它其实是is_home()对应的动态博客列表页(不是静态页面),导致is_page('blog')根本不生效。另外注意WordPress的坑:如果设置了静态首页,is_home()指向的是博客列表页,is_front_page()才是网站首页,别搞混。
2. 检查主题自定义加载函数的问题
你用的fx_assets_add_script和fx_assets_add_stylesheet不是WP原生函数,是主题自己写的。得扒一下主题代码:
- 找到这两个函数的定义(一般在
functions.php或者专门的assets.php里),看enqueue参数是不是真的被正确解析了——比如有没有写反条件、参数名拼错,或者函数内部有缓存逻辑,改了条件没即时生效。 - 确认函数是挂在
wp_enqueue_scripts钩子上执行的,优先级别太低,不然可能被其他代码覆盖。比如:add_action('wp_enqueue_scripts', '加载自定义资产', 10); function 加载自定义资产() { // 你的fx_assets_*调用写在这里 }
3. 排查插件锅
近期插件更新大概率是元凶,挨个排查:
- 先禁用所有第三方插件,刷新页面看资产加载不加载。如果好了,再一个个启用,找到搞事的那个。
- 重点盯缓存类(比如WP Rocket)、资产优化类(比如Autoptimize)、页面构建类(比如Elementor):
- 缓存插件:关掉“延迟加载JS/CSS”“合并资产”这类选项试试,说不定优化规则把你条件加载的文件过滤掉了。
- 资产优化插件:检查是不是把
fx_slick或site-posts误加入了排除列表,或者优化时删了加载逻辑。 - 页面构建器:如果页面是用它做的,可能自定义模板覆盖了主题的加载逻辑,导致主题代码没执行。
4. 查主题更新或自定义代码被覆盖
- 看看主题是不是近期更过新,更新可能把你改的条件加载代码还原了——拿本地备份的主题文件和当前文件对比下。
- 检查有没有其他自定义代码(比如子主题
functions.php、自己加的小插件)用wp_dequeue_script/wp_dequeue_style把这两个资产删了。加段调试代码看看:
如果显示没加载,要么条件没满足,要么被其他代码删了。add_action('wp_enqueue_scripts', '检查资产状态', 20); function 检查资产状态() { echo 'slick.js加载了吗?' . var_export(wp_script_is('fx_slick', 'enqueued'), true) . '<br>'; echo 'posts.css加载了吗?' . var_export(wp_style_is('site-posts', 'enqueued'), true) . '<br>'; }
5. 换用WP原生函数的替代方案(不全局加载)
要是上面都排查不出来,直接弃用主题自定义函数,用WP原生的加载逻辑,更靠谱:
add_action('wp_enqueue_scripts', 'enqueue_blog_assets'); function enqueue_blog_assets() { $theme_url = get_stylesheet_directory_uri(); // 判定slick.js的加载条件 $load_slick = is_archive() || is_home() || is_page(['promotions', 'press-releases', 'news-insights', 'newsroom', 'blog']); if ($load_slick) { wp_enqueue_script('fx_slick', $theme_url . '/assets/js/plugins/slick.js', ['jquery', 'fx_choices'], false, true); } // 判定posts.css的加载条件 $load_posts_css = is_single() || is_page(['promotions', 'newsroom', 'press-releases', 'news-insights', 'security-announcements', 'blog']) || is_home() || is_archive() || is_search() || is_author(); if ($load_posts_css) { wp_enqueue_style('site-posts', $theme_url . '/assets/css/posts.css', [], false); } }
直接用WP原生的wp_enqueue_script和wp_enqueue_style,逻辑透明,不容易踩主题自定义函数的坑。
内容的提问来源于stack exchange,提问作者WarpCoreBreach
相关产品推荐
相关产品推荐

