检查挂钩是否可用

时间:2020-09-03 作者:Daveh0

我正在使用一个特定于主题的自定义挂钩向页面的<body> 要素但是,我的站点上有一些使用模板的页面没有可用的挂钩,并且由于某些原因,我无法修改该模板或在我的子主题中创建自定义版本。我有一种不太优雅的添加属性/值的方法,显然我只想在绝对必要的时候使用。

有没有办法检查当前模板中是否有可用的挂钩?

Pseudo-code:

if(hook_is_available(\'custom_theme_hook\')) {
  add_filter(\'custom_theme_hook\', \'best_way\');
} else {
  add_action(\'wp_footer\', \'other_way\');
}
我尝试在回调中设置一个可以测试的全局变量,认为只有钩子可用时才会执行它,认为回调只有在有有效钩子的情况下才执行,但显然情况并非如此——不管怎样,变量在所有页面上都返回true。

有没有办法找出钩子是否已经跑了?是否有任何其他解决方案允许我在所有情况下添加属性/值?

1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

No, 为了让它可靠地工作,您需要注册挂钩,这是不可能做到的。知道模板是否触发挂钩的唯一方法是加载模板并找出答案。

您的问题有一个解决方案,但测试挂钩是否可用并不是解决方案

相关推荐

Calling hooks in functions

我习惯于使用主题挂钩,定期添加功能,但难以使用插件挂钩来过滤内容。这是我所知的极限,我试图理解这个过程,但没有用。我正在使用GigPress 管理事件。它允许您添加一个节目(基于日期),并将该节目与帖子(标准WP帖子)关联。我已经创建了一个自定义的帖子类型—productions—来关联节目,而不仅仅是一般的博客帖子。插件有一个钩子-gigpress_related_post_types —允许您用自己选择的任何CPT交换帖子。如果我直接编辑插件,它就会工作,将“帖子”替换为“产品”。如果我添加了我希望是