Get new WordPress slug from old wordpress slug

Before we start may I just quickly mention that for the future it is easier to reference the post by its ID instead of the URL as this is going to stay the same when slugs change. Anyway as you already have this shortcode now we need another solution.

Your problem is that you need to find a post from its URL when the permalink changed. Fortunately the old slug is stored in _wp_old_slug in the postmetatable. So this is two steps:

Get slug from URL

I assume that you didn’t change the permalink structure, just the slugs. So here is the code to extract the slug from the URL:

$url="http://www.listenmoneymatters.com/the-betterment-experiment/";
$url = explode("https://wordpress.stackexchange.com/",$url);   // Split URL at "https://wordpress.stackexchange.com/"
$url = array_filter();      // Remove empty array entries so get rid of last "https://wordpress.stackexchange.com/"
$slug = array_pop($url);    // Get last URL Segment

Query posts for this slug

$posts = get_posts(array(
    'meta_key'         => '_wp_old_slug',
    'meta_value'       => $slug,
    'post_type'        => 'post',
));