Background of the issue:
I am developing a site and want the WordPress API to respond in English. The main website language is another language, and I want to force all or some API endpoints to respond in English. I tried using the WPML Hook: do_action('wpml_switch_language', 'en'); but without success. For the WP Hook, we used: add_filter('rest_request_before_callbacks', ....).
Symptoms:
The WPML Hook used did not successfully make the WordPress API respond in English.
Questions:
How can I achieve that the API responds in English?
thanks for contacting us. I am not sure what approach you use but might be an issue with your custom code.
You can use the rest_request_before_callbacks filter to force the WPML language for specific API endpoints. I have just tried and seems to work fine, for example:
add_filter('rest_request_before_callbacks', function ($response, $handler, $request) {
// Specify the endpoints you want to target (or apply globally).
$target_endpoints = ['/wp/v2/posts', '/wp/v2/pages'];
if (in_array($request->get_route(), $target_endpoints, true)) {
// Switch WPML language context to English.
do_action('wpml_switch_language', 'en');
}
return $response;
}, 10, 3);
I hope this helps, but note we can not help with custom coding issues, but only provide guidance and examples like I did above. If you need further help you can hire WPML Contractor: https://wpml.org/contractors/