wp_ajax_(action)
Спрацьовує при запиті 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... }
Приклади
#1 Приклад використання
Дивіться у статті про AJAX .
список змін
З версії 2.1.0 | Введено. |
Де викликається хук
/wp-admin/admin-ajax.php
do_action("wp_ajax_{$action}");
Де використовується хук у WordPress
add_action( 'wp_ajax_' . $_GET['action'], 'wp_ajax_' . str_replace( '-', '_', $_GET['action'] ), 1 );
add_action( 'wp_ajax_nopriv_generate-password', 'wp_ajax_nopriv_generate_password');
add_action( 'wp_ajax_nopriv_heartbeat', 'wp_ajax_nopriv_heartbeat', 1);
add_action( 'wp_ajax_' . $_POST['action'], 'wp_ajax_' . str_replace( '-', '_', $_POST['action'] ), 1 );
add_action( 'wp_ajax_customize_override_changeset_lock', array( $this, 'handle_override_changeset_lock_request' ) );
add_action( 'wp_ajax_customize_dismiss_autosave_or_lock', array( $this, 'handle_dismiss_autosave_or_lock_request' ) );
add_action( 'wp_ajax_customize_trash', array( $this, 'handle_changeset_trash_request' ) );
add_action( 'wp_ajax_customize_load_themes', array( $this, 'handle_load_themes_request' ) );
add_action( 'wp_ajax_customize_refresh_nonces', array( $this, 'refresh_nonces' ) );
add_action( 'wp_ajax_customize_save', array( $this, 'save' ) );
add_action( 'wp_ajax_load-available-menu-items-customizer', array( $this, 'ajax_load_available_items' ) );
add_action( 'wp_ajax_search-available-menu-items-customizer', array( $this, 'ajax_search_available_items' ) );
add_action( 'wp_ajax_customize-nav-menus-insert-auto-draft', array( $this, 'ajax_insert_auto_draft_post' ) );