return $content
bölümünü aşağıdaki şekilde değiştirdiğinizde problem düzelir.
return $content;; benimde gözümden kaçmış, olmayınca sorunu sorunlu yeri kaldırarak çözdüm. Böylece istediğim gibi [benzer ıd=] mantığı ile çalışır oldu. Shortcode içerisine değer girip, harici bir içerik ekleyeceğim için content gerekli değildi. $content'in nasıl kullanıldığını öğrenmiş oldum ama :)
Birkaç sorum daha olacak. Kullanmak istediklerim başlık ve görselden ötedeymiş. Benim yazının URL'sine, Yayınlanma tarihine (18 haziran 2017), tarih tipine (2017-06-16T18:49:25+00:00), yazar ismine ve adresine de ihtiyacım varmış. Bunları da aradım anca kendim yapamadım.
Tarih tipi html'de datetime="2017-06-16T18:49:25+00:00" olarak görünüyor. Tema kodlarında ise datetime="' . date(DATE_W3C, $td_article_date_unix) . '" yazıyor.
Yani eklenmesi gerekenler $url $tarih $tarih_tipi $yazar $yazar_url
Şu an ki durum şöyle:
function bt_benzer($atts,$content=''){
    extract(shortcode_atts(
        array(
            'id' => ''
        ),
        $atts));
            if(!$id) return '';
            foreach(explode(',',$id) as $postId) {
                $post = get_post($postId);
                if (!$post) continue;
                $gorsel  = get_the_post_thumbnail_url($postId);
                $baslik = $post->post_title;
                $tarih = $post->post_date;
            }
return '';
}
add_shortcode('benzer', 'bt_benzer'); 
  