如何在WordPress后台页面输出首页已入队的脚本?
嘿,我来帮你搞定这个WordPress脚本句柄的问题!
解决WordPress首页入队脚本的获取与输出问题
一、不输出到首页,获取首页已入队脚本的方法
WordPress自带的脚本管理系统有很多可利用的钩子和全局对象,我们可以通过后台页面来获取首页的脚本队列,完全不会影响前端首页的正常显示,这里给你两种实用方案:
方案1:后台专属页面实时获取首页脚本列表
直接在后台创建一个自定义页面,模拟首页的查询环境来触发脚本入队逻辑,然后输出脚本句柄列表:
// 给后台添加一个"首页脚本列表"菜单 add_action('admin_menu', 'custom_home_script_menu'); function custom_home_script_menu() { add_menu_page( '首页已入队脚本', '首页脚本', 'manage_options', 'home-script-handles', 'render_home_script_list' ); } // 页面渲染回调函数 function render_home_script_list() { // 校验用户权限 if (!current_user_can('manage_options')) { wp_die('抱歉,你没有访问此页面的权限'); } // 临时切换到首页的查询环境,确保首页的脚本都被正确入队 global $wp_query; $original_query = $wp_query; $wp_query = new WP_Query(['page_id' => get_option('page_on_front')]); // 触发脚本入队钩子,拉取所有首页相关脚本 do_action('wp_enqueue_scripts'); // 获取全局脚本对象,提取已入队的句柄 global $wp_scripts; $enqueued_handles = $wp_scripts->queue; // 恢复原始查询,避免影响后台其他功能 $wp_query = $original_query; // 输出格式化的脚本列表 echo '<div class="wrap">'; echo '<h1>首页已入队脚本句柄</h1>'; echo '<ul style="margin-top:15px;">'; foreach ($enqueued_handles as $handle) { echo '<li style="padding:4px 0;">' . esc_html($handle) . '</li>'; } echo '</ul>'; echo '</div>'; }
添加这段代码到你的插件文件后,后台会多出一个「首页脚本」菜单,点击进去就能看到首页所有已入队的脚本句柄,完全不会干扰前端首页的输出。
方案2:保存脚本列表到选项,按需查看
如果不想每次都触发首页查询,可以在登录状态下访问首页时自动保存脚本列表,之后在后台直接查看:
// 登录状态下访问首页时,保存脚本列表到WordPress选项 add_action('wp_enqueue_scripts', 'save_home_scripts_to_db', 999); function save_home_scripts_to_db() { if (is_admin_bar_showing() && current_user_can('manage_options')) { global $wp_scripts; update_option('home_enqueued_scripts', $wp_scripts->queue); } } // 后台添加子页面显示保存的脚本列表 add_action('admin_menu', 'saved_home_script_submenu'); function saved_home_script_submenu() { add_submenu_page( 'home-script-handles', '已保存的脚本列表', '已保存列表', 'manage_options', 'saved-home-scripts', 'render_saved_script_list' ); } function render_saved_script_list() { if (!current_user_can('manage_options')) { wp_die('抱歉,你没有访问此页面的权限'); } $saved_scripts = get_option('home_enqueued_scripts', []); echo '<div class="wrap">'; echo '<h1>已保存的首页脚本句柄</h1>'; if (empty($saved_scripts)) { echo '<p>暂无保存的脚本,请先登录状态下访问一次首页</p>'; } else { echo '<ul style="margin-top:15px;">'; foreach ($saved_scripts as $handle) { echo '<li style="padding:4px 0;">' . esc_html($handle) . '</li>'; } echo '</ul>'; } echo '</div>'; }
这个方案适合需要多次查看脚本列表的场景,登录后访问一次首页,后台就能看到缓存好的结果。
二、扩展功能建议(针对你没说完的需求)
如果你还有其他需求,比如查看脚本的依赖关系、源文件路径,或者过滤特定脚本,可以基于$wp_scripts对象扩展:
- 查看脚本依赖:
$wp_scripts->registered[$handle]->deps - 查看脚本源文件:
$wp_scripts->registered[$handle]->src - 过滤脚本:可以在获取
$enqueued_handles后,用array_filter()筛选出你需要的内容
内容的提问来源于stack exchange,提问作者Chris Thomas
相关产品推荐
相关产品推荐

