Is there anyway to detect if the current server operation is currently an AJAX request in WordPress?
For example:
is_ajax()
Is there anyway to detect if the current server operation is currently an AJAX request in WordPress?
For example:
is_ajax()
You must be logged in to post a comment.
Update: since WordPress 4.7.0 you can call a function wp_doing_ajax(). This is preferable because plugins that “do Ajax” differently can filter to turn a “false” into a “true”.
Original answer:
If you’re using Ajax as recommended in the codex, then you can test for the
DOING_AJAX
constant:WordPress 4.7 has introduced an easy way to check for AJAX requests, so I thought I would add to this older question.
From the Developer Reference:
Description: Determines whether the current request is a WordPress Ajax request.
Return: (bool) True if it’s a WordPress Ajax request, false otherwise.
It is essentially a wrapper for DOING_AJAX.
To see if the current request is an AJAX request sent from a js library ( like jQuery ), you could try something like this:
I know this is an old thread, but there is an issue with the accepted answer,
Checking for the defined DOING_AJAX constant will always be true, if the request is to the admin-ajax.php file. (https://core.trac.wordpress.org/browser/tags/4.4.2/src/wp-admin/admin-ajax.php#L16)
Sometimes admin-ajax.php hooks aren’t used for AJAX request, just a simple endpoint (Paypal IPN for example).
The correct way is what Ian and Spencer have mentioned.
(would have commented… but no rep)
I am not sure if WordPress has a function for this but it can be done by creating a simple one yourself.
I personally prefer the
wp_doing_ajax()
, but here is another example that should do it.