Inject “fake” category to widget/block

Done like this:

function cat_filter($args) {

    if (count($args) < 10) {
        return $args;
    }

    $new = new WP_Term((object)[
        'term_id' => -17,
        'name' => 'Blog',
        'slug' => 'blog',
        'taxonomy' => 'category',
    ]);
    array_splice($args, -5, 0, [$new]);

    return $args;
}

add_filter('get_terms', 'cat_filter', 10, 1);

add_filter('term_link', function( $url, $term, $taxonomy ) {
    if ( $term->term_id == -17 ) {
        $url = "https://example.com";
    }
    return $url;
}, 10, 3);