子主题中无法入队脚本问题排查求助
问题排查与解决方案
我来帮你梳理下问题所在,你的代码有几个关键细节没处理好,导致脚本看起来注册成功但没实际效果:
1. jQuery依赖的写法错误
你在注册脚本时,jQuery依赖写成了array(jquery)——这里的jquery是字符串,必须加上单引号或双引号,否则PHP会把它当作未定义的变量,导致依赖加载异常,脚本可能无法正常执行。
2. JS函数定义后未触发执行
你的custom_functions.js里只定义了set_rollup_links_greensboro函数,但没有主动调用它,所以这段代码永远不会被执行。
3. 未确保DOM加载完成后再操作元素
即使脚本在页脚加载(你设置了true参数),也可能存在DOM元素还未渲染完成的情况,导致getElementById找不到目标元素,代码执行失败。
修改后的代码示例
1. functions.php 修正
function tutor_portal_scripts() { $user = wp_get_current_user(); if (in_array( 'ad_greensboro', (array) $user->roles ) ) { debug_to_console("User is AD Greensboro"); // 修正jQuery依赖的引号问题 wp_register_script('set_rollup_links_greensboro', get_stylesheet_directory_uri() . '/js/custom_functions.js', array('jquery'), '', true); wp_enqueue_script('set_rollup_links_greensboro'); } } add_action( 'wp_enqueue_scripts', 'tutor_portal_scripts' );
2. custom_functions.js 修正(原生JS版)
function set_rollup_links_greensboro() { console.log("Set rollup links for Greensboro AD"); var at_link = document.getElementById('at-view-link'); var bas_link = document.getElementById('bas-view-link'); var tutor_link = document.getElementById('tutors-view-link'); // 先检查元素是否存在,避免控制台报错 if (at_link) at_link.setAttribute('href', 'https://devts.techstartutors.com/appointment-tracker-form-view-greensboro-nc/'); if (bas_link) bas_link.setAttribute('href', 'https://devts.techstartutors.com/book-a-service-form-view-greensboro-nc/'); if (tutor_link) tutor_link.setAttribute('href', 'https://devts.techstartutors.com/'); } // 等待DOM完全加载后执行函数 document.addEventListener('DOMContentLoaded', function() { set_rollup_links_greensboro(); });
或者用jQuery版本(因为已经依赖了jQuery,写法更简洁):
// 利用jQuery的ready事件确保DOM加载完成 jQuery(document).ready(function($) { console.log("Set rollup links for Greensboro AD"); var at_link = $('#at-view-link'); var bas_link = $('#bas-view-link'); var tutor_link = $('#tutors-view-link'); // 检查元素是否存在再修改属性 if (at_link.length) at_link.attr('href', 'https://devts.techstartutors.com/appointment-tracker-form-view-greensboro-nc/'); if (bas_link.length) bas_link.attr('href', 'https://devts.techstartutors.com/book-a-service-form-view-greensboro-nc/'); if (tutor_link.length) tutor_link.attr('href', 'https://devts.techstartutors.com/'); });
额外排查步骤
- 打开浏览器控制台(F12),查看Console标签是否有报错信息;
- 切换到Network标签,刷新页面,确认
custom_functions.js是否成功加载; - 检查
debug_to_console的输出,确认用户角色判断逻辑是否正常触发。
内容的提问来源于stack exchange,提问作者Evan Scott
相关产品推荐
相关产品推荐

