SEO

Breadcrumb Schema Nasıl Eklenir?

Breadcrumb Schema Nasıl Eklenir? konusunda güvenli uygulama, doğrulama ve sık yapılan hatalar için UST Bilişim teknik rehberi.

Breadcrumb Schema Nasıl Eklenir?Teknik bilgi • Uygulanabilir yaklaşım
Breadcrumb Schema Nasıl Eklenir? konusunda güvenli uygulama, doğrulama ve sık yapılan hatalar için UST Bilişim teknik rehberi.

Bu rehberde bir içerik sayfasına çalışan bir BreadcrumbList örneği ekleyecek, sayfa yolunu ziyaretçiye gösterecek ve üretilen veriyi kontrol edeceksiniz. Örnek hiyerarşi: Ana Sayfa → Kategori → Mevcut Sayfa. Alan adını, başlıkları ve yolları kendi sayfanıza göre değiştirin.

1 · Ana Sayfa
/
2 · Kategori
/kategori/
3 · Mevcut Sayfa
/kategori/sayfa/
Şekil: Her kutu bir ListItem; soldan sağa sıra position değerini belirler. Bu, uygulanacak hiyerarşinin şemasıdır.

1. Önce mevcut çıktıyı ve sayfa yolunu kontrol edin

Hedef sayfayı açın, sağ tıklayıp “Sayfa kaynağını görüntüle” seçeneğiyle BreadcrumbList arayın. Tema veya SEO eklentisi zaten doğru veri üretiyorsa aynı yolu ikinci kez eklemeyin. Önce mevcut çıktıyı düzeltin. Bir sayfada farklı geçerli yollar bulunabilir; burada tek bir gezinme yolu kullanıyoruz.

Örneğin bir “Sunucu Kurulumu” yazısı için kategori gerçekten “Bilgi Merkezi” ise şemada da bu kategori yer almalı. URL parçalarını otomatik bölmek yerine ziyaretçinin kullandığı gezinme sırasını belirleyin.

2. Kopyalanabilir JSON-LD örneği

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Ana Sayfa",
      "item": "https://siteniz.com/"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Kategori",
      "item": "https://siteniz.com/kategori/"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Mevcut Sayfa",
      "item": "https://siteniz.com/kategori/sayfa/"
    }
  ]
}
</script>

Bu blok HTML içinde kullanılan JSON-LD’dir. Açılış ve kapanış script etiketlerini birlikte alın. Statik HTML sayfasında </head> satırından hemen önce yerleştirin. Yalnızca ilgili sayfaya ait bilgiler bulunmalı; bütün yazılara aynı “Mevcut Sayfa” değerini basan ortak bir blok eklemeyin.

AlanNe yazılmalı?
nameZiyaretçinin gördüğü sayfa veya kategori adı.
itemİlgili sayfanın gerçek, mutlak ve tercih edilen URL’si.
position1’den başlayan, gezinme sırasına göre artan tam sayı.

Örnekteki https://siteniz.com/kategori/ adresinde alan adından sonraki eğik çizgiye dikkat edin. https://siteniz.comkategori farklı bir alan adı olur. Siteniz eğik çizgisiz URL kullanıyorsa kendi canonical adreslerinizi kullanın. Örnek alan adını yayına bırakmayın.

3. Ziyaretçinin göreceği yolu ekleyin

JSON-LD ekranda bir menü oluşturmaz. Aşağıdaki HTML’yi sayfanın body bölümünde, içerik başlığının üstüne ekleyin. Temanız zaten bu yolu gösteriyorsa ikinci bir menü eklemeniz gerekmez.

<nav aria-label="Sayfa yolu">
  <ol>
    <li><a href="https://siteniz.com/">Ana Sayfa</a></li>
    <li><a href="https://siteniz.com/kategori/">Kategori</a></li>
    <li><span aria-current="page">Mevcut Sayfa</span></li>
  </ol>
</nav>

Görünür yolun sırası ile JSON-LD’deki sıra aynı olmalı. Son öğe bulunduğunuz sayfadır. Görünüm için temanızdaki liste ve bağlantı stillerini kullanabilirsiniz.

4. PHP sitesinde her sayfa için dinamik üretin

Statik JSON yerine aşağıdaki PHP örneğini kullanabilirsiniz; iki örneği aynı sayfaya birlikte eklemeyin. Önce geliştirme kopyasında deneyin. Dosya PHP tarafından işlenen sayfa şablonu olmalı; kodu yazı editörünün metin alanına yapıştırmak PHP çalıştırmaz.

<?php
// PHP 7.3+; bu örneği sayfanın .php şablonuna ekleyin.
// Gerçek uygulamada başlık ve yolları o sayfanın CMS kaydından alın.
$siteUrl = 'https://siteniz.com'; // Sabit, güvenilir site adresi
$breadcrumbs = [
    ['name' => 'Ana Sayfa', 'path' => '/'],
    ['name' => 'Kategori', 'path' => '/kategori/'],
    ['name' => 'Mevcut Sayfa', 'path' => '/kategori/sayfa/'],
];
$items = [];
foreach ($breadcrumbs as $index => $crumb) {
    $items[] = [
        '@type' => 'ListItem',
        'position' => $index + 1,
        'name' => $crumb['name'],
        'item' => rtrim($siteUrl, '/') . '/' . ltrim($crumb['path'], '/'),
    ];
}
$schema = [
    '@context' => 'https://schema.org',
    '@type' => 'BreadcrumbList',
    'itemListElement' => $items,
];
// Başlıklardaki HTML karakterlerini script içinde güvenli kodlayın.
// Geçersiz UTF-8 verisini kaynakta düzeltin; hatayı sessizce yutmayın.
$schemaJson = json_encode($schema,
    JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES |
    JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT |
    JSON_THROW_ON_ERROR
);
?>
<script type="application/ld+json"><?= $schemaJson ?></script>

Örnekteki $breadcrumbs dizisi bilerek somut değerlerle dolduruldu. CMS entegrasyonunda son öğenin adını yazının başlığıyla, yolunu yazının canonical yolu ile değiştirin; kategori öğesini de o kaydın kategorisinden alın. Projenizdeki değişken adları farklı olacağından bu eşlemeyi şablonunuzda yapın. Aynı diziyi görünür menüyü üretmek için de kullanırsanız sıra uyuşmazlığını önlersiniz.

json_encode tırnakları ve satır sonlarını JSON biçimine dönüştürür. HEX seçenekleri, başlıkta özel HTML karakterleri olsa bile script bağlamında güvenli kodlama sağlar. JSON çıktısının tamamına htmlspecialchars uygulamayın; script içindeki JSON’un tırnaklarını HTML varlıklarına dönüştürmüş olursunuz. Görünür HTML menüsüne yazdırdığınız başlık ve URL’leri ise HTML bağlamına uygun kaçışla yazdırın.

WordPress kullanıyorsanız önce tema/SEO eklentinizin breadcrumb çıktısını kontrol edin. Elle PHP eklemeniz gerekiyorsa güncellemede silinmeyecek bir child theme veya projeye özel eklenti üzerinden uygulayın; bu genel PHP örneği WordPress’e otomatik bağlanan bir eklenti değildir.

5. Kodun gerçekten çalıştığını doğrulayın

Önbelleği temizleyin, sayfayı yeniden açın ve kaynak kodda application/ld+json arayın. PHP kaynak kodu değil, gerçek başlık ve URL’lerle üretilmiş JSON görmelisiniz. Ardından aşağıdaki sırayla kontrol edin:

  1. Google Rich Results Test aracında önce kodu, yayınladıktan sonra sayfa URL’sini test edin.
  2. Breadcrumb öğesini açın; başlık, sıra ve adresleri tek tek karşılaştırın. Geçerli JSON tek başına doğru sayfa yolu anlamına gelmez.
  3. Schema Markup Validator ile yapısal kontrol yapın.
  4. İlgili URL’leri tarayıcıda açın: yanlış kategori, 404 ve gereksiz yönlendirme olmamalı.
  5. Search Console URL Denetimi ile Google’ın erişimini kontrol edin. Geçerli şema, arama sonucunda gösterim garantisi değildir.

Yerelde yalnızca JSON sözdizimini kontrol etmek isterseniz script etiketlerinin arasındaki nesneyi breadcrumb.json adıyla kaydedip aşağıdaki komutu çalıştırın. Bu test Google uygunluğunu veya URL erişimini sınamaz.

python3 -m json.tool breadcrumb.json

6. Sık hatalar ve düzeltmeleri

BelirtiKontrol / düzeltme
JSON ayrıştırma hatasıSondaki gereksiz virgülü, eksik çift tırnağı ve kapanmayan köşeli parantezi düzeltin.
Kod sayfada metin gibi görünüyorÇalışan şema şablona eklenmeli. Yazıda örnek göstermek için ise kaçışlı pre/code kullanılır.
Her yazıda aynı son URLOrtak şablondaki sabit değerleri mevcut yazının verileriyle değiştirin.
Kaynakta eski veriUygulama, sayfa ve CDN önbelleklerini temizleyip tekrar bakın.
PHP hata verdiSunucu hata kaydını kontrol edin; PHP sürümünü ve UTF-8 verilerini doğrulayın.
İki farklı eklenti aynı yolu üretiyorAynı yolu üreten tek kaynağı seçin; şemayı iki yerden yönetmeyin.

Geri alma

Düzenlemeden önce şablon dosyasının kopyasını alın. Sorun çıkarsa eklediğiniz bloğu kaldırın veya dosyanın önceki sürümünü geri koyup önbelleği temizleyin. Bütün sitenin SEO ayarlarını sıfırlamanız gerekmez.

Kaynaklar: Google Breadcrumb belgeleri · PHP json_encode belgeleri.

UST Bilişim Yaklaşımı

Bilgiyi uygulanabilir projeye dönüştürelim.

İhtiyacınızı teknik, operasyonel ve ticari açıdan değerlendirip doğru çözüm yol haritasını birlikte oluşturalım.

Projenizi Anlatın