Display content based on multiple URL parameters—pretty URL or query string

you have a little error in the call of add_rewrite_rule with an extra slash before index.php.

with this correction, your system works without a CPT like data. you can try that :

add_action('init', function () {
    
    add_rewrite_rule(
        '^data/([a-z0-9-]+)/([a-z0-9-]+)/([a-z0-9-]+)/?$',
        'index.php?data_type=$matches[1]&data_action=$matches[2]&data_post_id=$matches[3]',
        'top'
    );
    
});


add_action("template_redirect", function () {
    
    $data = [];
    
    foreach (["data_type", "data_action", "data_post_id"] as $key) {
        $data[$key] = $GLOBALS["wp_query"]->query_vars[$key] ?? "";
    }
    
    
    if (    in_array($data["data_type"], ["neighborhood", "project", "property"])
        &&  in_array($data["data_action"], ["add", "edit", "delete"])
    ) {
        // special handling
        status_header(200);
        
        $template_file = "...";
        
        require $template_file;
        exit();
        
    }
    
    
});


function wpse_data_management_query_vars( $vars ) {
    $vars[] = 'data_type';
    $vars[] = 'data_action';
    $vars[] = 'data_post_id';
    return $vars;
}

add_filter( 'query_vars', 'wpse_data_management_query_vars' );

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)