# do_action()

URL: https://chugunov.pro/api-wordpress/functions/do_action/
Проверено на WordPress 6.9, обновлено 06.08.2026.
Источник: независимый русскоязычный справочник chugunov.pro. Не является официальной документацией WordPress.

Тип: функция.
Появился в версии: 1.2.0.

## Сигнатура

```php
do_action( string $hook_name, mixed $arg )
```

## Описание

Эта функция вызывает все функции, привязанные к хуку-действию $hook_name.
Можно создавать новые хуки-действия, просто вызвав эту функцию и указав имя нового хука в параметре $hook_name.
Хукам можно передавать дополнительные аргументы, во многом так же, как и в apply_filters().
Пример использования:
// Функция обратного вызова действия.
function example_callback( $arg1, $arg2 ) {
// (возможно) что-то сделать с аргументами.
}
add_action( 'example_action', 'example_callback', 10, 2 );

/*
* Запустить действия, вызвав функцию 'example_callback()',
* которая привязана к `example_action` выше.
*
* - 'example_action' — это хук-действие.
* - $arg1 и $arg2 — дополнительные аргументы, передаваемые в функцию обратного вызова.
do_action( 'example_action', $arg1, $arg2 );

## Параметры

- `$hook_name` `string` — обязательный. Имя выполняемого действия.
- `$arg` `mixed` — необязательный. Дополнительные аргументы, которые передаются функциям, привязанным к действию. По умолчанию пусто.

## Исходный код

Файл: `wp-includes/plugin.php:487`

```php
function do_action( $hook_name, ...$arg ) {
	global $wp_filter, $wp_actions, $wp_current_filter;

	if ( ! isset( $wp_actions[ $hook_name ] ) ) {
		$wp_actions[ $hook_name ] = 1;
	} else {
		++$wp_actions[ $hook_name ];
	}

	// Do 'all' actions first.
	if ( isset( $wp_filter['all'] ) ) {
		$wp_current_filter[] = $hook_name;
		$all_args            = func_get_args(); // phpcs:ignore PHPCompatibility.FunctionUse.ArgumentFunctionsReportCurrentValue.NeedsInspection
		_wp_call_all_hook( $all_args );
	}

	if ( ! isset( $wp_filter[ $hook_name ] ) ) {
		if ( isset( $wp_filter['all'] ) ) {
			array_pop( $wp_current_filter );
		}

		return;
	}

	if ( ! isset( $wp_filter['all'] ) ) {
		$wp_current_filter[] = $hook_name;
	}

	if ( empty( $arg ) ) {
		$arg[] = '';
	} elseif ( is_array( $arg[0] ) && 1 === count( $arg[0] ) && isset( $arg[0][0] ) && is_object( $arg[0][0] ) ) {
		// Backward compatibility for PHP4-style passing of `array( &$this )` as action `$arg`.
		$arg[0] = $arg[0][0];
	}

	$wp_filter[ $hook_name ]->do_action( $arg );

	array_pop( $wp_current_filter );
}
```

## История изменений

- 5.3.0 — Formalized the existing and already documented ...$arg parameter by adding it to the function signature.
- 1.2.0 — Introduced.

## Связанные

Использует: [`_wp_call_all_hook`](https://chugunov.pro/api-wordpress/functions/_wp_call_all_hook/).
Используется в: [`_wp_connectors_init`](https://chugunov.pro/api-wordpress/functions/_wp_connectors_init/), [`wp_options_connectors_wp_admin_enqueue_scripts`](https://chugunov.pro/api-wordpress/functions/wp_options_connectors_wp_admin_enqueue_scripts/), [`wp_options_connectors_render_page`](https://chugunov.pro/api-wordpress/functions/wp_options_connectors_render_page/), [`wp_font_library_render_page`](https://chugunov.pro/api-wordpress/functions/wp_font_library_render_page/), [`wp_font_library_wp_admin_enqueue_scripts`](https://chugunov.pro/api-wordpress/functions/wp_font_library_wp_admin_enqueue_scripts/), `WP_AI_Client_Event_Dispatcher::dispatch`, [`wp_start_template_enhancement_output_buffer`](https://chugunov.pro/api-wordpress/functions/wp_start_template_enhancement_output_buffer/), [`wp_finalize_template_enhancement_output_buffer`](https://chugunov.pro/api-wordpress/functions/wp_finalize_template_enhancement_output_buffer/), [`wp_get_speculation_rules`](https://chugunov.pro/api-wordpress/functions/wp_get_speculation_rules/), `WP_Abilities_Registry::get_instance`, `WP_Ability_Categories_Registry::get_instance`, `WP_Ability::execute`, [`wp_admin_notice`](https://chugunov.pro/api-wordpress/functions/wp_admin_notice/), [`wp_trigger_error`](https://chugunov.pro/api-wordpress/functions/wp_trigger_error/), [`_deprecated_class`](https://chugunov.pro/api-wordpress/functions/_deprecated_class/), [`wp_cache_set_last_changed`](https://chugunov.pro/api-wordpress/functions/wp_cache_set_last_changed/), [`_wp_get_iframed_editor_assets`](https://chugunov.pro/api-wordpress/functions/_wp_get_iframed_editor_assets/), `WP_REST_Menu_Items_Controller::create_item`, `WP_REST_Menu_Items_Controller::update_item`, `WP_REST_Menu_Items_Controller::delete_item`, `WP_REST_Menus_Controller::create_item`, `WP_REST_Menus_Controller::update_item`, `WP_REST_Menus_Controller::delete_item`, `WP_REST_Menus_Controller::handle_auto_add`, `WP_REST_Widgets_Controller::delete_item`, `WP_REST_Widgets_Controller::save_widget`, `WP_REST_Sidebars_Controller::update_item`, `WP_REST_Templates_Controller::update_item`, `WP_REST_Templates_Controller::create_item`, [`wp_render_widget`](https://chugunov.pro/api-wordpress/functions/wp_render_widget/), `WP_REST_Application_Passwords_Controller::create_item`, `WP_REST_Application_Passwords_Controller::update_item`, `WP_Application_Passwords::delete_application_password`, `WP_Application_Passwords::delete_all_application_passwords`, `WP_Application_Passwords::create_new_application_password`, `WP_Application_Passwords::update_application_password`, [`wp_authenticate_application_password`](https://chugunov.pro/api-wordpress/functions/wp_authenticate_application_password/), [`wp_after_insert_post`](https://chugunov.pro/api-wordpress/functions/wp_after_insert_post/), `WP_Application_Passwords_List_Table::column_default`, `WP_Application_Passwords_List_Table::print_js_template_row`.

Оригинал в официальной документации: https://developer.wordpress.org/reference/functions/do_action/
