wordpress add_action, do_action

Почему это работает

add_action('my_hook_test', 'my_hook_func', 10, 1 );
do_action('my_hook_test', 'test');

function my_hook_func($title){
    print_r($title);
}

А вот это не работает

add_action('admin_menu', 'my_hook_func', 10, 1 );
do_action('admin_menu', 'test');

function my_hook_func($title){
    print_r($title);
}

Как применить do_action на admin_menu


Ответы (1 шт):

Автор решения: KAGG Design

Они работают обе. На пустой странице фронтенда их видно. В бэкенде их вывод не видно, потому что он перекрыт стилями. Откройте исходный код страницы - увидите.

У вас какая задача? Вывести что-то перед началом вывода меню? Ядро вызывает такое действие: do_action( 'admin_menu', '' );. Поэтому, если в вашем коде присутствует только add_action('admin_menu', 'my_hook_func', 10, 1 );, то ваш print_r выводит пустую строку в этот момент.

Для теста используйте код

add_action( 'admin_menu', 'my_admin_menu');

function my_admin_menu( $title ) {
    echo '************************';
}

Откройте исходный код страницы (Ctrl+U), увидите эти звёздочки.

На этом хуке обычно регистрируют страницу меню.

→ Ссылка