Murat Çeşmecioğlu

Kişisel Web Sitesi

Uzun süredir iş-güç derken yazamadığımın farkındayım. Bu yüzden sitenin kodlarını tekrar elden geçirip en azından biraz ilgi göstermeye başlarım diye düşündüm. Bu arada sitenin teması olan Simple5’i bir gece yarısı tekrar elden geçirip Simple 5.1’i hazırlamış bulunuyorum. Daha esnek bir tasarıma sahip, gereksiz javascript, css ve resimlerden arındırılmış bir hale geldi.

Bu süreçte karşılaştığım sorunlardan birisi ise responsive tasarımda yazılara eklediğim resimlerin tarayıcı genişliğine göre büyüyüp küçülmemesi oldu. Bunun sebebi WordPress’in resim eklerken, resmi çevreleyen wp-caption class’ına sahip div’e style etiketiyle css kodu ile genişlik belirtmesiydi. Benim ihtiyacım olan width yerine max-width olmasıydı. Bunun için hemen temanın kodlarına aşağıda paylaştığım kodu ekledim. Böylece WordPress’in caption shortcode’unu yöneten fonksiyonunu kendi isteğime göre şekillendirdim.

function sp5_img_caption_shortcode_filter($val, $attr, $content = null)
 {
 extract(shortcode_atts(array(
 'id' => '',
 'align' => 'aligncenter',
 'width' => '',
 'caption' => '',
 'class' => ''
 ) , $attr));
 if (1 > (int)$width || empty($caption)) {
 return $val;
 }
 if ($id) {
 $id = esc_attr($id);
 }
 $siteclass = trim('wp-caption ' . $align . ' ' . $class);
 return '<div id="' . esc_attr($id) . '" class="' . esc_attr($siteclass) . '"  style="max-width: ' . (0 + (int)$width) . 'px">' . do_shortcode($content) . '<p class="wp-caption-text">' . $caption . '</p></div>';
 }
 add_filter('img_caption_shortcode', 'sp5_img_caption_shortcode_filter', 10, 3);

Yazdığım ufak bir projede cURL ile çektiğim JSON verisini bir türlü PHP’de json_decode fonksiyonu ile kullanamıyordum. Nedenini araştırıp buldum. Hem kodları kaybetmeyeyim, hemde benzer problem ile karşılaşanlara yardımcı olayım dedim.

UTF-8 ile hayatımıza girmiş olan BOM (Byte Order Mark), dosyanın UTF-8 formatında olduğunu belirtmek için eklenen bir başlıktır. Dosyanın başına eklenen unicode U+FEFF karakteridir. Hex olarak 0xEF,0xBB,0xBF; ascii olarak  karakterlerine karşılık gelir. Bu karakterlerin dosyanın başında bulunması bazı zamanlarda sorunlara yol açar. Örneğin benim durumumda JSON verisi olarak çektiğimi sandığım veride aslında ilk başındaki BOM yüzünden JSON olarak kullanamadım. Görülebilen bir karakter olmadığı için de hemen fark edilmiyor.

Benzer bir durumla karşılaştığınızda aşağıdaki kodla gelen veriyi bin2hex fonksiyonu ile 16lık sisteme dönüştürerek efbbbf karakterlerinin olup olmadığına bakıyoruz. Eğer varsa bunları siliyoruz.

if (0 === strpos(bin2hex($data), 'efbbbf')) {
$data = substr($data, 3);
}