WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am using the wp-polls plugin on my website. This plugin relies on using AJAX requests of the form http://www.myfakewebsiteurl.com/wp-admin/admin-ajax.php?action=polls&view=process&poll_id=2&poll_2=8&poll_2_nonce=420d75e659

When I log in, this request works fine: it pulls the poll results from the server, and then displays them on the desired web page.

However, when I log out, this request redirects me to the home page. Thus, instead of the poll results appearing, I get the home page loaded where the poll results are supposed to be.

Why would admin-ajax.php redirect visitors to my Wordpress-powered site who are not logged in to the home page of my website?

share|improve this question
up vote 3 down vote accepted

It only redirects when accessed directly, as do all files located in wp-admin/. AJAX requests should work fine regardless of authentication status.

Edit: wp-admin/admin-ajax.php should not redirect in any situation. Perhaps a plugin is redirecting all unauthenticated users to the homepage? By default, accessing files inside wp-admin/ when not logged in should redirect to the login page.

share|improve this answer
Thank you, but I'm not visiting the URL directly in my browser address bar. I'm retrieving the URL via AJAX in jQuery code. That should work, right? – David Faux Dec 8 '12 at 3:36
Yes, it should. Perhaps a plugin is redirecting unauthenticated users to the homepage? By default, accessing files inside wp-admin/ when not logged in should redirect to the login page. – shea Dec 8 '12 at 3:38
OMG! You're right! I've been debugging this for 5 days, and I never suspected that! Apparently, one of my plugins was redirecting visitors if they were not logged in to the home page. I found this out by performing grep -R 'redirect' . in my plugins folder. I am still confused though. Why would code in another plugin be called? The AJAX request wasn't even relevant to this plugin ... – David Faux Dec 8 '12 at 3:59
It depends on how the redirect is handled - if they check for the WP_ADMIN constant or use the is_admin() function, then it will trigger on any AJAX request or any wp-admin page – shea Dec 8 '12 at 4:27
Thank you! That makes sense. admin-ajax.php is an admin file. – David Faux Dec 8 '12 at 4:53

Okay, so here's the deal. Redirect plugins have to do the following to avoid this issue.

if ( !defined( 'DOING_AJAX' ) ) {}

It's that simple. Simple mistake, and easy to fix.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.