is_admin returning false in backend in server side rendered block

If you have a server side rendered block in the backend, it is rendered via the REST API endpoint /wp/v2/block-renderer/xyz/blockname. This endpoint calls your render function. In the frontend the render function is called directly. The function is_admin() checks if a backend page was requested. In a REST API Request is no backend page, so the function returns false on REST API requests.

Instead you can check, if it is a REST API request via:

if ( defined( 'REST_REQUEST' ) && REST_REQUEST ) {
    return 'Backend';
} else {
    return 'Frontend';
};

Leave a Comment