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-admin/admin-ajax.php 187

do_action("wp_ajax_{$action}");

Де використовується хук у WordPress

wp-admin/admin-ajax.php 160

add_action( 'wp_ajax_' . $_GET['action'], 'wp_ajax_' . str_replace( '-', '_', $_GET['action'] ), 1 );

wp-admin/admin-ajax.php 167

add_action( 'wp_ajax_nopriv_generate-password', 'wp_ajax_nopriv_generate_password');

wp-admin/admin-ajax.php 169

add_action( 'wp_ajax_nopriv_heartbeat', 'wp_ajax_nopriv_heartbeat', 1);

wp-admin/admin-ajax.php 164

add_action( 'wp_ajax_' . $_POST['action'], 'wp_ajax_' . str_replace( '-', '_', $_POST['action'] ), 1 );

wp-includes/class-wp-customize-manager.php 383

add_action( 'wp_ajax_customize_override_changeset_lock', array( $this, 'handle_override_changeset_lock_request' ) );

wp-includes/class-wp-customize-manager.php 384

add_action( 'wp_ajax_customize_dismiss_autosave_or_lock', array( $this, 'handle_dismiss_autosave_or_lock_request' ) );

wp-includes/class-wp-customize-manager.php 378

add_action( 'wp_ajax_customize_trash', array( $this, 'handle_changeset_trash_request' ) );

wp-includes/class-wp-customize-manager.php 380

add_action( 'wp_ajax_customize_load_themes', array( $this, 'handle_load_themes_request' ) );

wp-includes/class-wp-customize-manager.php 379

add_action( 'wp_ajax_customize_refresh_nonces', array( $this, 'refresh_nonces' ) );

wp-includes/class-wp-customize-manager.php 377

add_action( 'wp_ajax_customize_save', array( $this, 'save' ) );

wp-includes/class-wp-customize-nav-menus.php 60

add_action( 'wp_ajax_load-available-menu-items-customizer', array( $this, 'ajax_load_available_items' ) );

wp-includes/class-wp-customize-nav-menus.php 61

add_action( 'wp_ajax_search-available-menu-items-customizer', array( $this, 'ajax_search_available_items' ) );

wp-includes/class-wp-customize-nav-menus.php 62

add_action( 'wp_ajax_customize-nav-menus-insert-auto-draft', array( $this, 'ajax_insert_auto_draft_post' ) );

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *