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');