快速提示:获取当前屏幕的钩子函数

只要有可能,最好使用特定于屏幕的挂钩,而不是更通用的 init、admin_init、admin_footer 等(除非您特别希望回调在每个屏幕上运行)。在这个快速提示中,我们将了解如何轻松获取任何特定页面的屏幕挂钩。

页面特定挂钩

页面特定的挂钩提供了最有效(也是最干净)的方式,仅针对您需要的屏幕进行回调。它们包括:

load-{page-hook} – 在屏幕加载之前调用(可以在此处找到此逻辑)admin_print_styles-{page-hook} – 在管理页面的 中打印样式的操作admin_print_scripts-{page-hook} – 在管理页面的 中打印脚本的操作admin_head-{page-hook} – 在管理页面的 内触发的操作admin_footer-{page-hook} – 在管理页面上的 结束标记上方触发的操作

但是 {page-hook} 对于任何特定页面的价值是多少?特别查看 load-* 钩子,您会发现在确定 {page-hook} 时存在相当复杂的逻辑。特别是,它对待自定义插件页面与“核心”页面(例如帖子类型和分类页面)不同,并且为了向后兼容,在编辑帖子、页面或类别时,它将在同一屏幕上使用多个钩子.

{page-hook}取值的一般规则可以总结如下:

对于通过 add_menu_page()(及相关函数)添加的自定义管理页面,它是屏幕 ID(add_menu_page() 返回的值)对于列出任何帖子类型的帖子的管理页面,它是 edit.php在任何帖子类型的“添加新”页面上,都是 post-new.php任意帖子类型的编辑页面都是post.php对于分类页面,它是 edit-tags.php

无论如何生成页面hook,最终都是保存在全局$hook_suffix中。

轻松获取屏幕的挂钩

一般来说,这些规则足以确定页面特定的挂钩。但在与他们合作时,我经常发现有一个简单的参考是很有帮助的。为了创建这个简单的参考,我们将在每个屏幕右上角的“帮助”选项卡中添加一个面板,其中将列出屏幕的详细信息(屏幕 ID、屏幕底座,以及最有用的屏幕的挂钩后缀 em>)。它还会列出屏幕的特定挂钩。

帮助选项卡中的面板是在 3.3 中引入的,因此这仅适用于 WordPress 版本 3.3+。要添加面板,我们使用 contextual_help 过滤器。这是一个用于向后兼容目的的过滤器,因此我们实际上不过滤任何内容。相反,我们使用 WP_Screen::add_help_tab 方法。

/* Add contextual help */add_filter( 'contextual_help', 'wptuts_screen_help', 10, 3 );function wptuts_screen_help( $contextual_help, $screen_id, $screen ) { // The add_help_tab function for screen was introduced in WordPress 3.3.if ( ! method_exists( $screen, 'add_help_tab' ) )return $contextual_help;/* ... generate help content ... */$help_content ='';$screen->add_help_tab( array('id'      => 'wptuts-screen-help','title'   => 'Screen Information','content' => $help_content,));return $contextual_help;}

登录后复制

为了生成帮助内容,我们采用全局 $hook_suffix 并将其附加到上面提到的钩子干中。我们还获得了屏幕详细信息的列表,这些详细信息存储为 WP_Screen 对象的属性。

global $hook_suffix;// List screen properties$variables = '

登录后复制Screen variables ‘. sprintf( ‘ Screen id : %s’, $screen_id ). sprintf( ‘ Screen base : %s’, $screen->base ). sprintf( ‘Parent base : %s’, $screen->parent_base ). sprintf( ‘ Parent file : %s’, $screen->parent_file ). sprintf( ‘ Hook suffix : %s’, $hook_suffix ). ”;// Append global $hook_suffix to the hook stems$hooks = array(“load-$hook_suffix”,”admin_print_styles-$hook_suffix”,”admin_print_scripts-$hook_suffix”,”admin_head-$hook_suffix”,”admin_footer-$hook_suffix”);// If add_meta_boxes or add_meta_boxes_{screen_id} is used, list these tooif ( did_action( ‘add_meta_boxes_’ . $screen_id ) )$hooks[] = ‘add_meta_boxes_’ . $screen_id;if ( did_action( ‘add_meta_boxes’ ) )$hooks[] = ‘add_meta_boxes’;// Get List HTML for the hooks$hooks = ‘Hooks ‘ . implode( ”, $hooks ) . ”;// Combine $variables list with $hooks list.$help_content = $variables . $hooks;

这将为我们提供如下内容:

快速提示:获取当前屏幕的钩子函数

完整代码

您可以将以下内容放入站点的实用程序插件中,或者(如果必须的话)放入主题的 functions.php 中。确保将 wptuts_screen_help 重命名为您独有的名称。

add_action( 'contextual_help', 'wptuts_screen_help', 10, 3 );function wptuts_screen_help( $contextual_help, $screen_id, $screen ) {// The add_help_tab function for screen was introduced in WordPress 3.3.if ( ! method_exists( $screen, 'add_help_tab' ) )return $contextual_help;global $hook_suffix;// List screen properties$variables = '

登录后复制Screen variables ‘. sprintf( ‘ Screen id : %s’, $screen_id ). sprintf( ‘ Screen base : %s’, $screen->base ). sprintf( ‘Parent base : %s’, $screen->parent_base ). sprintf( ‘ Parent file : %s’, $screen->parent_file ). sprintf( ‘ Hook suffix : %s’, $hook_suffix ). ”;// Append global $hook_suffix to the hook stems$hooks = array(“load-$hook_suffix”,”admin_print_styles-$hook_suffix”,”admin_print_scripts-$hook_suffix”,”admin_head-$hook_suffix”,”admin_footer-$hook_suffix”);// If add_meta_boxes or add_meta_boxes_{screen_id} is used, list these tooif ( did_action( ‘add_meta_boxes_’ . $screen_id ) )$hooks[] = ‘add_meta_boxes_’ . $screen_id;if ( did_action( ‘add_meta_boxes’ ) )$hooks[] = ‘add_meta_boxes’;// Get List HTML for the hooks$hooks = ‘Hooks ‘ . implode( ”, $hooks ) . ”;// Combine $variables list with $hooks list.$help_content = $variables . $hooks;// Add help panel$screen->add_help_tab( array(‘id’ => ‘wptuts-screen-help’,’title’ => ‘Screen Information’,’content’ => $help_content,));return $contextual_help;}

以上就是快速提示:获取当前屏幕的钩子函数的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1701418.html

(0)
上一篇 2025年2月19日 14:42:35
下一篇 2025年2月19日 14:42:52

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 夺宝奇兵古老之圈地窖冒险书籍怎么获取

    《夺宝奇兵:古老之圈》地窖冒险书籍获取攻略!想获得珍贵的“地窖冒险书籍”吗?本文将为您详细介绍收集路线及方法,助您轻松获取! 地窖冒险书籍:街头斗士1 首先,前往F区击败BOSS【朱塞佩】,获得【地窖钥匙】。 然后,前往邮局旁的地窖入口,使…

    2025年2月23日
    100
  • 无限暖暖日光树怎么获取

    在《无限暖暖》中,金蔷薇套装的制作需要大量的日光树。为了提高制作效率,掌握日光树的获取和刷新位置至关重要。以下方法将助您快速收集日光树: 日光树收集技巧: 时间很重要: 日光树只在白天刷新,请务必在游戏时间的白天进行收集。 最佳收集地点: …

    2025年2月23日
    100
  • 鬼谷八荒手游天才地宝怎么获取

    鬼谷八荒手游:高效获取天才地宝攻略 想在鬼谷八荒手游中快速获得稀有的天才地宝?本文将为您详细解读天才地宝的获取途径,助您轻松合成结晶! 首先,部分天才地宝隐藏于玄灵秘境之中。永宁地区拥有两个秘境,雷泽深处则隐藏着第三个。建议您提前购买雷泽避…

    2025年2月22日
    100
  • 鬼谷八荒手游神魂怎么获取

    鬼谷八荒手游:五大神魂获取攻略及技巧 想在鬼谷八荒手游中获得强大的神魂?本文将详细介绍五种神魂(蛟龙、勾陈、玄龟、陆吾、重名)的获取方法,助你轻松提升实力! 蛟龙神魂: 需要“蕴仙芝”(冰原BOSS掉落)。建议先前往冰原击杀BOSS获得蕴仙…

    2025年2月22日
    100
  • 使用PHP函数 "mysqli_fetch_assoc" 从结果集中获取一行作为关联数组

    使用php函数 “mysqli_fetch_assoc” 从结果集中获取一行作为关联数组 在PHP中,与数据库进行交互是一项常见的任务。当我们执行SELECT查询并获取结果集时,我们通常需要将结果集中的数据存储到PH…

    编程技术 2025年2月22日
    100
  • 鬼谷八荒手游特殊坐骑怎么获取

    《鬼谷八荒》手游特殊坐骑获取指南:解锁你的专属坐骑! 想在《鬼谷八荒》手游中获得炫酷的特殊坐骑?本文将为你详细介绍各种特殊坐骑的获取方法,助你快速解锁心仪坐骑! 圣阳羽毛: 完成主线任务“圣阳”即可获得。 坤坤: 游戏开局即可获得,是你的初…

    2025年2月22日
    100
  • 无限暖暖星空渔场巡星天鹅怎么获取

    解锁无限暖暖星空渔场巡星天鹅,见证绝美pv!许多玩家都渴望获得这款独特的巡星天鹅,本文将详细介绍获取方法。 首先,前往游戏地图中左侧岛屿的“翱翔,于星空之上”区域。 其次,与NPC“甜甜圈兜·小香香”对话,接取任务。 接下来,换上清洁套装,…

    2025年2月22日
    100
  • 鸣潮云母釉岩怎么获取

    鸣潮云母釉岩获取指南及刷新点分布图 在鸣潮游戏中,云母釉岩是重要的锻造矿石,许多玩家都在寻找它的刷新地点。本文将提供详细的云母釉岩获取指南,并附带地图标注,帮助您快速找到这些矿石。 白月林迹: 该区域内分布着两处云母釉岩矿点。 三重冠塔 &…

    2025年2月22日 游戏
    100
  • 燕云十六声暗影暗涌碎片怎么获取

    燕云十六声:快速收集暗影暗涌碎片指南 想在《燕云十六声》游戏中快速收集暗影暗涌碎片?这篇指南将为您详细介绍碎片的获取途径,助您快速推进暗线剧情! 一、碎片获取地点一览 以下列举了游戏中获取暗影暗涌碎片的多个地点,请仔细阅读并前往收集: 达安…

    2025年2月22日
    100
  • 燕云十六声伊刀的刀怎么获取

    《燕云十六声》伊刀获取攻略:快速找到伊刀残刀位置! 许多玩家都在寻找《燕云十六声》中伊刀的获取方法。 想要获得这把独特的武器,你需要知道正确的刷新地点。 以下步骤将帮助你快速找到伊刀残刀并完成相关任务。 首先,前往焚毁不羡仙的位置(地图标记…

    2025年2月22日
    100

发表回复

登录后才能评论