This is quite a specific issue you will only encounter if you are attempting to call the Yelp Fusion API using any of WordPress’ request methods such as wp_remote_get
(that’s probably the one you are using). In attempting to do so, you will find yourself faced with a 403 error.
You’re passing up your API key or valid token, but still, the request won’t work.
This issue goes back a few years, but the bottom-line is Yelp block requests made from user agents featuring “WordPress”. The default user-agent for wp_remote_get
and other methods just so happens to be this.
This issue has a sort of explanation from Yelp. They don’t go into specifics and say why, but the workaround is simple. Set the user-agent to empty or something else.
In my case, I ended up with the following:
$args = array( 'headers' => array( 'user-agent' => '', 'Content-Type' => 'application/json', 'Authorization' => 'Bearer ' . $token, ), ); $response = wp_remote_get($endpoint, $args); $response_code = wp_remote_retrieve_response_code( $response ); $response_body = wp_remote_retrieve_body( $response );
Like I said, a specific problem only to WordPress users who are using the in-built request methods. Curl and other ways you can make a request like file_get_contents
do not experience this issue.