Sitemap dosyasının otomatik olarak güncellenmesi (Php)

Sitemap dosyasının otomatik olarak güncellenmesi (Php)

Geçen gün bir tanıdığım hazır satın aldıkları scriptlerinde sitemap olmadığını söyledi. Hem satın almışlar hem de listelenmede ve search console’da çok önemli bir yeri olan sitemap dosyasını bulamamışlar. Firma ile iletişime geçmişler fakat nafile, isterlerse belli bir ücret karşılığında kendilerine yazabileceklerini iletmişler ve işin içinden sıyrılmışlar 🙂 Ne kadar kolay değil mi

Halbuki sadece haberler ve sayfalar kısımlarındaki içeriklerinin güncellenmesini istiyorlardı. Veritabanında “haberler” ve “sayfalar” satılarının yapısal sorgusunu gördükten sonra işe koyulmaya karar verdim. Çok uzatmadan kodu paylaşmak istiyorum. Bu şekilde kendi sitemap dosyasını çok kolay oluşturabilirsiniz.

<?php
// Veritabanı bağlantı bilgilerinizi ekleyin
$host = "localhost";
$username = "veritabani_kullanici";
$password = "veritabani_sifre";
$database = "veritabani_adi";

try {
    $pdo = new PDO("mysql:host=$host;dbname=$database;charset=utf8", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    die("Veritabanı bağlantısı başarısız: " . $e->getMessage());
}

// Dinamik olarak haberleri ve sayfaları veritabanından çekin
$query_haberler = $pdo->query("SELECT seo, tarih FROM haberler WHERE durum = 1 ORDER BY tarih DESC");
$haberler = $query_haberler->fetchAll(PDO::FETCH_ASSOC);

$query_sayfalar = $pdo->query("SELECT seo, tarih FROM sayfalar WHERE durum = 1 ORDER BY tarih DESC");
$sayfalar = $query_sayfalar->fetchAll(PDO::FETCH_ASSOC);

// XML formatında sitemap oluşturun
header('Content-Type: application/xml; charset=utf-8');

echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';

// Haberler için URL'leri ekleyin
foreach ($haberler as $haber) {
    $tarih = $haber['tarih'];
    $lastmod = !empty($tarih) && strtotime($tarih) ? date('Y-m-d', strtotime($tarih)) : date('Y-m-d');

    echo '<url>';
    echo '<loc>https://siteadi/blog/' . htmlspecialchars($haber['seo']) . '.html</loc>';
    echo '<lastmod>' . $lastmod . '</lastmod>';
    echo '<changefreq>weekly</changefreq>';
    echo '<priority>0.8</priority>';
    echo '</url>';
}

// Sayfalar için URL'leri ekleyin ve "/sayfa/" parametresini ekleyin
foreach ($sayfalar as $sayfa) {
    $tarih = $sayfa['tarih'];
    $lastmod = !empty($tarih) && strtotime($tarih) ? date('Y-m-d', strtotime($tarih)) : date('Y-m-d');

    echo '<url>';
    echo '<loc>https://siteadi.com/sayfa/' . htmlspecialchars($sayfa['seo']) . '.html</loc>';
    echo '<lastmod>' . $lastmod . '</lastmod>';
    echo '<changefreq>weekly</changefreq>';
    echo '<priority>0.8</priority>';
    echo '</url>';
}

echo '</urlset>';

Örnek çıktımız:

<url>
    <loc>https://siteadi.com/blog/ornek-makale.html</loc>
    <lastmod>2024-08-18</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
</url>
<url>
    <loc>https://siteadi.com/sayfa/iletisim.html</loc>
    <lastmod>2024-08-18</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
</url>

Posted by Tolgien