WordPress как на ладони

wp_ajax_(action)хук-событиеWP 2.1.0

Срабатывает при WP AJAX запросе для авторизованного пользователя. Это запрос на файл /wp-admin/admin-ajax.php.

Это событие не сработает если пользователь не авторизован ! is_user_logged_in(). Для неавторизованных пользователей есть событие wp_ajax_nopriv_(action) — оно работает абсолютно также как и это событие, с той лишь разницей что срабатывает только для неавторизованных пользователей.

(action) — это динамическая часть хука, в которой нужно указать название AJAX события. Это название нужно будет использовать как GET|POST параметр action в самом AJAX запросе на файл /wp-admin/admin-ajax.php. А также, на основе этого названия нужно будет создать хук, который будет обрабатывать AJAX запрос.

Рассмотрим на примере.

Допустим, мы придумали следующее название для события: find-best-posts. Тогда название хука будет: wp_ajax_find-best-posts и на этот хук нам нужно будет прикрепить php функцию, которая будет обрабатывать AJAX запрос от авторизованного пользователя. Для этого нужно использовать следующий код в плагине или файле темы functions.php:

add_action( 'wp_ajax_find-best-posts', 'find_best_posts__ajax_callback' );
function find_best_posts__ajax_callback(){}
// название php функции может быть любое

Теперь при создании AJAX запроса в js на файл /wp-admin/admin-ajax.php в GET или POST параметре нужно указать наш action. Пример JS кода:

let ajaxurl = '/wp-admin/admin-ajax.php';
let data = {
	action: 'find-best-posts',
	more_data: '...'
}

jQuery.post( ajaxurl, data, function( response ){
	console.log( response );
} );

Подробнее о том, как создавать AJAX запросы в WordPress: AJAX в WordPress (базовые знания).

Список занятых (action) в ядре WordPress

В ядре WP PHP функции для события называются также как и событие, только - заменяется на _. Так например, если мы видим ajax запрос с событием get-permalink, то php функция для этого AJAX запроса будет называться wp_ajax_get_permalink().

Для GET запроса: action → PHP функция (справедливо для wp 5.7.2):

fetch-list           →   wp_ajax_fetch_list()
ajax-tag-search      →   wp_ajax_ajax_tag_search()
wp-compression-test  →   wp_ajax_wp_compression_test()
imgedit-preview      →   wp_ajax_imgedit_preview()
oembed-cache         →   wp_ajax_oembed_cache()
autocomplete-user    →   wp_ajax_autocomplete_user()
dashboard-widgets    →   wp_ajax_dashboard_widgets()
logged-in            →   wp_ajax_logged_in()
rest-nonce           →   wp_ajax_rest_nonce()

Для POST запроса: action → PHP функция (справедливо для wp 5.7.2):

oembed-cache                      → wp_ajax_oembed_cache()
image-editor                      → wp_ajax_image_editor()
delete-comment                    → wp_ajax_delete_comment()
delete-tag                        → wp_ajax_delete_tag()
delete-link                       → wp_ajax_delete_link()
delete-meta                       → wp_ajax_delete_meta()
delete-post                       → wp_ajax_delete_post()
trash-post                        → wp_ajax_trash_post()
untrash-post                      → wp_ajax_untrash_post()
delete-page                       → wp_ajax_delete_page()
dim-comment                       → wp_ajax_dim_comment()
add-link-category                 → wp_ajax_add_link_category()
add-tag                           → wp_ajax_add_tag()
get-tagcloud                      → wp_ajax_get_tagcloud()
get-comments                      → wp_ajax_get_comments()
replyto-comment                   → wp_ajax_replyto_comment()
edit-comment                      → wp_ajax_edit_comment()
add-menu-item                     → wp_ajax_add_menu_item()
add-meta                          → wp_ajax_add_meta()
add-user                          → wp_ajax_add_user()
closed-postboxes                  → wp_ajax_closed_postboxes()
hidden-columns                    → wp_ajax_hidden_columns()
update-welcome-panel              → wp_ajax_update_welcome_panel()
menu-get-metabox                  → wp_ajax_menu_get_metabox()
wp-link-ajax                      → wp_ajax_wp_link_ajax()
menu-locations-save               → wp_ajax_menu_locations_save()
menu-quick-search                 → wp_ajax_menu_quick_search()
meta-box-order                    → wp_ajax_meta_box_order()
get-permalink                     → wp_ajax_get_permalink()
sample-permalink                  → wp_ajax_sample_permalink()
inline-save                       → wp_ajax_inline_save()
inline-save-tax                   → wp_ajax_inline_save_tax()
find_posts                        → wp_ajax_find_posts()
widgets-order                     → wp_ajax_widgets_order()
save-widget                       → wp_ajax_save_widget()
delete-inactive-widgets           → wp_ajax_delete_inactive_widgets()
set-post-thumbnail                → wp_ajax_set_post_thumbnail()
date_format                       → wp_ajax_date_format()
time_format                       → wp_ajax_time_format()
wp-remove-post-lock               → wp_ajax_wp_remove_post_lock()
dismiss-wp-pointer                → wp_ajax_dismiss_wp_pointer()
upload-attachment                 → wp_ajax_upload_attachment()
get-attachment                    → wp_ajax_get_attachment()
query-attachments                 → wp_ajax_query_attachments()
save-attachment                   → wp_ajax_save_attachment()
save-attachment-compat            → wp_ajax_save_attachment_compat()
send-link-to-editor               → wp_ajax_send_link_to_editor()
send-attachment-to-editor         → wp_ajax_send_attachment_to_editor()
save-attachment-order             → wp_ajax_save_attachment_order()
media-create-image-subsizes       → wp_ajax_media_create_image_subsizes()
heartbeat                         → wp_ajax_heartbeat()
get-revision-diffs                → wp_ajax_get_revision_diffs()
save-user-color-scheme            → wp_ajax_save_user_color_scheme()
update-widget                     → wp_ajax_update_widget()
query-themes                      → wp_ajax_query_themes()
parse-embed                       → wp_ajax_parse_embed()
set-attachment-thumbnail          → wp_ajax_set_attachment_thumbnail()
parse-media-shortcode             → wp_ajax_parse_media_shortcode()
destroy-sessions                  → wp_ajax_destroy_sessions()
install-plugin                    → wp_ajax_install_plugin()
update-plugin                     → wp_ajax_update_plugin()
crop-image                        → wp_ajax_crop_image()
generate-password                 → wp_ajax_generate_password()
save-wporg-username               → wp_ajax_save_wporg_username()
delete-plugin                     → wp_ajax_delete_plugin()
search-plugins                    → wp_ajax_search_plugins()
search-install-plugins            → wp_ajax_search_install_plugins()
activate-plugin                   → wp_ajax_activate_plugin()
update-theme                      → wp_ajax_update_theme()
delete-theme                      → wp_ajax_delete_theme()
install-theme                     → wp_ajax_install_theme()
get-post-thumbnail-html           → wp_ajax_get_post_thumbnail_html()
get-community-events              → wp_ajax_get_community_events()
edit-theme-plugin-file            → wp_ajax_edit_theme_plugin_file()
wp-privacy-export-personal-data   → wp_ajax_wp_privacy_export_personal_data()
wp-privacy-erase-personal-data    → wp_ajax_wp_privacy_erase_personal_data()
health-check-site-status-result   → wp_ajax_health_check_site_status_result()
health-check-dotorg-communication → wp_ajax_health_check_dotorg_communication()
health-check-is-in-debug-mode     → wp_ajax_health_check_is_in_debug_mode()
health-check-background-updates   → wp_ajax_health_check_background_updates()
health-check-loopback-requests    → wp_ajax_health_check_loopback_requests()
health-check-get-sizes            → wp_ajax_health_check_get_sizes()
toggle-auto-updates               → wp_ajax_toggle_auto_updates()
send-password-reset               → wp_ajax_send_password_reset()

// УСТАРЕЛЫЕ
wp-fullscreen-save-post           → wp_ajax_wp_fullscreen_save_post()
press-this-save-post              → wp_ajax_press_this_save_post()
press-this-add-category           → wp_ajax_press_this_add_category()
health-check-dotorg-communication → wp_ajax_health_check_dotorg_communication()
health-check-is-in-debug-mode     → wp_ajax_health_check_is_in_debug_mode()
health-check-background-updates   → wp_ajax_health_check_background_updates()
health-check-loopback-requests    → wp_ajax_health_check_loopback_requests()

Использование

add_action( 'wp_ajax_(action)', 'wp_kama_ajax_action' );

/**
 * Function for `wp_ajax_(action)` action-hook.
 * 
 * @return void
 */
function wp_kama_ajax_action(){

	// action...
}

Примеры

0

#1 Пример использования

Смотрите в статье про AJAX.

Список изменений

С версии 2.1.0 Введена.

Где вызывается хук

В файле: /wp-admin/admin-ajax.php
wp_ajax_(action)
wp-admin/admin-ajax.php 192
do_action( "wp_ajax_{$action}" );

Где используется хук в WordPress

wp-admin/admin-ajax.php 162
add_action( 'wp_ajax_' . $_GET['action'], 'wp_ajax_' . str_replace( '-', '_', $_GET['action'] ), 1 );
wp-admin/admin-ajax.php 166
add_action( 'wp_ajax_' . $_POST['action'], 'wp_ajax_' . str_replace( '-', '_', $_POST['action'] ), 1 );
wp-admin/admin-ajax.php 169
add_action( 'wp_ajax_nopriv_generate-password', 'wp_ajax_nopriv_generate_password' );
wp-admin/admin-ajax.php 171
add_action( 'wp_ajax_nopriv_heartbeat', 'wp_ajax_nopriv_heartbeat', 1 );
wp-admin/admin-ajax.php 174
add_action( 'wp_ajax_check_plugin_dependencies', array( 'WP_Plugin_Dependencies', 'check_plugin_dependencies_during_ajax' ) );
wp-admin/includes/class-custom-background.php 57
add_action( 'wp_ajax_custom-background-add', array( $this, 'ajax_background_add' ) );
wp-admin/includes/class-custom-background.php 60
add_action( 'wp_ajax_set-background-image', array( $this, 'wp_set_background_image' ) );
wp-admin/includes/class-custom-image-header.php 65
add_action( 'wp_ajax_custom-header-crop', array( $this, 'ajax_header_crop' ) );
wp-admin/includes/class-custom-image-header.php 66
add_action( 'wp_ajax_custom-header-add', array( $this, 'ajax_header_add' ) );
wp-admin/includes/class-custom-image-header.php 67
add_action( 'wp_ajax_custom-header-remove', array( $this, 'ajax_header_remove' ) );
wp-includes/class-wp-customize-manager.php 380
add_action( 'wp_ajax_customize_save', array( $this, 'save' ) );
wp-includes/class-wp-customize-manager.php 381
add_action( 'wp_ajax_customize_trash', array( $this, 'handle_changeset_trash_request' ) );
wp-includes/class-wp-customize-manager.php 382
add_action( 'wp_ajax_customize_refresh_nonces', array( $this, 'refresh_nonces' ) );
wp-includes/class-wp-customize-manager.php 383
add_action( 'wp_ajax_customize_load_themes', array( $this, 'handle_load_themes_request' ) );
wp-includes/class-wp-customize-manager.php 386
add_action( 'wp_ajax_customize_override_changeset_lock', array( $this, 'handle_override_changeset_lock_request' ) );
wp-includes/class-wp-customize-manager.php 387
add_action( 'wp_ajax_customize_dismiss_autosave_or_lock', array( $this, 'handle_dismiss_autosave_or_lock_request' ) );
wp-includes/class-wp-customize-nav-menus.php 61
add_action( 'wp_ajax_load-available-menu-items-customizer', array( $this, 'ajax_load_available_items' ) );
wp-includes/class-wp-customize-nav-menus.php 62
add_action( 'wp_ajax_search-available-menu-items-customizer', array( $this, 'ajax_search_available_items' ) );
wp-includes/class-wp-customize-nav-menus.php 63
add_action( 'wp_ajax_customize-nav-menus-insert-auto-draft', array( $this, 'ajax_insert_auto_draft_post' ) );
wp-includes/class-wp-taxonomy.php 547
add_filter( 'wp_ajax_add-' . $this->name, '_wp_ajax_add_hierarchical_term' );
wp-includes/class-wp-taxonomy.php 556
remove_filter( 'wp_ajax_add-' . $this->name, '_wp_ajax_add_hierarchical_term' );
1 комментарий
    Войти