Como verificar se um gancho protegido está enganchado?

Preciso proteger alguns ganchos que só podem ser enganchados por funções / retorno de chamada no meu tema / plugin.

Por exemplo:

if ( is_protected_hook('hook_name') ) { throw new \Exception('You cannot hook to a protected hook.'); } else { do_action('hook_name'); } 

Existe uma maneira de definir a function is_protected_hook() ?

Qualquer sugestão será muito apreciada!

Solutions Collecting From Web of "Como verificar se um gancho protegido está enganchado?"

Conforme observado na minha resposta à sua pergunta relacionada, existe um arquivo de dados $wp_filter que armazena todas as informações em ganchos e filtros. Você pode tentar um var_dump apenas para ver o que parece. Não existe uma variável incorporada “protegida”.

Isso deixa você com duas opções para manter a administração dos ganchos que deseja proteger: crie-o em $wp_filter ou mantenha-o separado. Eu recomendo o último.

Mantenha uma matriz $protected_hooks . Não conheço as condições em que deseja que os ganchos sejam protegidos, mas você terá que configurar esta matriz no momento em que você adiciona uma ação a um gancho específico.

Agora, no seu arquivo tempate você precisará de uma condição dupla: é um gancho ativo e está protegido. Isso seria assim:

 if ((has_filter('hook_name') && in_array('hook_name',$protected_hooks)) ... 

Isso não pode ser resolvido por código, pois wordpress, temas e plugins ocupam o mesmo espaço de dados e programas, por isso não há como segregar nada de forma que seja um bala prof.

A questão é por que você quer fazer uma coisa assim? se for porque é instável, então você pode apenas documentar explicitamente ao lado do uso do gancho que é apenas para uso interno.