Spaces:
Sleeping
Sleeping
/** | |
* WordPress Ajax Process Execution | |
* | |
* @package WordPress | |
* @subpackage Administration | |
* | |
* @link https://developer.wordpress.org/plugins/javascript/ajax | |
*/ | |
/** | |
* Executing Ajax process. | |
* | |
* @since 2.1.0 | |
*/ | |
define( 'DOING_AJAX', true ); | |
if ( ! defined( 'WP_ADMIN' ) ) { | |
define( 'WP_ADMIN', true ); | |
} | |
/** Load WordPress Bootstrap */ | |
require_once dirname( __DIR__ ) . '/wp-load.php'; | |
/** Allow for cross-domain requests (from the front end). */ | |
send_origin_headers(); | |
header( 'Content-Type: text/html; charset=' . get_option( 'blog_charset' ) ); | |
header( 'X-Robots-Tag: noindex' ); | |
// Require a valid action parameter. | |
if ( empty( $_REQUEST['action'] ) || ! is_scalar( $_REQUEST['action'] ) ) { | |
wp_die( '0', 400 ); | |
} | |
/** Load WordPress Administration APIs */ | |
require_once ABSPATH . 'wp-admin/includes/admin.php'; | |
/** Load Ajax Handlers for WordPress Core */ | |
require_once ABSPATH . 'wp-admin/includes/ajax-actions.php'; | |
send_nosniff_header(); | |
nocache_headers(); | |
/** This action is documented in wp-admin/admin.php */ | |
do_action( 'admin_init' ); | |
$core_actions_get = array( | |
'fetch-list', | |
'ajax-tag-search', | |
'wp-compression-test', | |
'imgedit-preview', | |
'oembed-cache', | |
'autocomplete-user', | |
'dashboard-widgets', | |
'logged-in', | |
'rest-nonce', | |
); | |
$core_actions_post = array( | |
'oembed-cache', | |
'image-editor', | |
'delete-comment', | |
'delete-tag', | |
'delete-link', | |
'delete-meta', | |
'delete-post', | |
'trash-post', | |
'untrash-post', | |
'delete-page', | |
'dim-comment', | |
'add-link-category', | |
'add-tag', | |
'get-tagcloud', | |
'get-comments', | |
'replyto-comment', | |
'edit-comment', | |
'add-menu-item', | |
'add-meta', | |
'add-user', | |
'closed-postboxes', | |
'hidden-columns', | |
'update-welcome-panel', | |
'menu-get-metabox', | |
'wp-link-ajax', | |
'menu-locations-save', | |
'menu-quick-search', | |
'meta-box-order', | |
'get-permalink', | |
'sample-permalink', | |
'inline-save', | |
'inline-save-tax', | |
'find_posts', | |
'widgets-order', | |
'save-widget', | |
'delete-inactive-widgets', | |
'set-post-thumbnail', | |
'date_format', | |
'time_format', | |
'wp-remove-post-lock', | |
'dismiss-wp-pointer', | |
'upload-attachment', | |
'get-attachment', | |
'query-attachments', | |
'save-attachment', | |
'save-attachment-compat', | |
'send-link-to-editor', | |
'send-attachment-to-editor', | |
'save-attachment-order', | |
'media-create-image-subsizes', | |
'heartbeat', | |
'get-revision-diffs', | |
'save-user-color-scheme', | |
'update-widget', | |
'query-themes', | |
'parse-embed', | |
'set-attachment-thumbnail', | |
'parse-media-shortcode', | |
'destroy-sessions', | |
'install-plugin', | |
'activate-plugin', | |
'update-plugin', | |
'crop-image', | |
'generate-password', | |
'save-wporg-username', | |
'delete-plugin', | |
'search-plugins', | |
'search-install-plugins', | |
'activate-plugin', | |
'update-theme', | |
'delete-theme', | |
'install-theme', | |
'get-post-thumbnail-html', | |
'get-community-events', | |
'edit-theme-plugin-file', | |
'wp-privacy-export-personal-data', | |
'wp-privacy-erase-personal-data', | |
'health-check-site-status-result', | |
'health-check-dotorg-communication', | |
'health-check-is-in-debug-mode', | |
'health-check-background-updates', | |
'health-check-loopback-requests', | |
'health-check-get-sizes', | |
'toggle-auto-updates', | |
'send-password-reset', | |
); | |
// Deprecated. | |
$core_actions_post_deprecated = array( | |
'wp-fullscreen-save-post', | |
'press-this-save-post', | |
'press-this-add-category', | |
'health-check-dotorg-communication', | |
'health-check-is-in-debug-mode', | |
'health-check-background-updates', | |
'health-check-loopback-requests', | |
); | |
$core_actions_post = array_merge( $core_actions_post, $core_actions_post_deprecated ); | |
// Register core Ajax calls. | |
if ( ! empty( $_GET['action'] ) && in_array( $_GET['action'], $core_actions_get, true ) ) { | |
add_action( 'wp_ajax_' . $_GET['action'], 'wp_ajax_' . str_replace( '-', '_', $_GET['action'] ), 1 ); | |
} | |
if ( ! empty( $_POST['action'] ) && in_array( $_POST['action'], $core_actions_post, true ) ) { | |
add_action( 'wp_ajax_' . $_POST['action'], 'wp_ajax_' . str_replace( '-', '_', $_POST['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 ); | |
// Register Plugin Dependencies Ajax calls. | |
add_action( 'wp_ajax_check_plugin_dependencies', array( 'WP_Plugin_Dependencies', 'check_plugin_dependencies_during_ajax' ) ); | |
$action = $_REQUEST['action']; | |
if ( is_user_logged_in() ) { | |
// If no action is registered, return a Bad Request response. | |
if ( ! has_action( "wp_ajax_{$action}" ) ) { | |
wp_die( '0', 400 ); | |
} | |
/** | |
* Fires authenticated Ajax actions for logged-in users. | |
* | |
* The dynamic portion of the hook name, `$action`, refers | |
* to the name of the Ajax action callback being fired. | |
* | |
* @since 2.1.0 | |
*/ | |
do_action( "wp_ajax_{$action}" ); | |
} else { | |
// If no action is registered, return a Bad Request response. | |
if ( ! has_action( "wp_ajax_nopriv_{$action}" ) ) { | |
wp_die( '0', 400 ); | |
} | |
/** | |
* Fires non-authenticated Ajax actions for logged-out users. | |
* | |
* The dynamic portion of the hook name, `$action`, refers | |
* to the name of the Ajax action callback being fired. | |
* | |
* @since 2.8.0 | |
*/ | |
do_action( "wp_ajax_nopriv_{$action}" ); | |
} | |
// Default status. | |
wp_die( '0' ); | |