PHP code example of coderden / sitemap-generator

1. Go to this page and download the library: Download coderden/sitemap-generator library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

coderden / sitemap-generator example snippets


// Initialize generator
$generator = new SitemapGenerator('/path/to/public', 'https://example.com');

// Create URL with attributes
$url1 = new Url('https://example.com/page1');
$url1->setLastModification(new DateTime())
     ->setChangeFrequency('weekly')
     ->setPriority(0.8);

$url2 = new Url('https://example.com/page2');
$url2->setLastModification(new DateTime('-1 week'))
     ->setChangeFrequency('daily')
     ->setPriority(1.0);

// Add URLs to generator
$generator->addUrl($url1)
          ->addUrl($url2);

// Generate sitemap
$generatedFiles = $generator->generate();

echo "Generated files: " . implode(', ', $generatedFiles);

$urls = [
    [
        'loc' => 'https://example.com/page1',
        'lastmod' => '2024-01-15',
        'changefreq' => 'weekly',
        'priority' => 0.8,
    ],
    [
        'loc' => 'https://example.com/page2',
        'lastmod' => new DateTime(),
        'priority' => 1.0,
    ],
];

$generator = SitemapGenerator::createFromArray(
    $urls,
    '/path/to/public',
    'https://example.com',
    1000 // URLs per file (optional, default: 50000)
);

$files = $generator->generate();

$generator = new SitemapGenerator('/path/to/public', 'https://example.com');

// Set custom file name prefix
$generator->setFileNamePrefix('my-sitemap');

// Set custom limit (default: 50000)
$generator = new SitemapGenerator('/path/to/public', 'https://example.com', 1000);

// Add 1500 URLs
for ($i = 1; $i <= 1500; $i++) {
    $url = new Url("https://example.com/page{$i}");
    $generator->addUrl($url);
}

// Generates:
// - my-sitemap-1.xml (1000 URLs)
// - my-sitemap-2.xml (500 URLs)
// - my-sitemap-index.xml (links to both files)
$files = $generator->generate();

$indexGenerator = new SitemapIndexGenerator('/path/to/public', 'https://example.com');

$indexGenerator->addSitemap('sitemap-pages.xml', new DateTime())
               ->addSitemap('sitemap-posts.xml', new DateTime('-1 day'))
               ->addSitemap('https://cdn.example.com/sitemap-images.xml', new DateTime());

$indexFile = $indexGenerator->generate('custom-index.xml');


namespace App\Services;

use Coderden\SitemapGenerator\SitemapGenerator;
use Coderden\SitemapGenerator\Url;
use App\Models\Post;
use App\Models\Page;

class SitemapService
{
    public function generate()
    {
        $generator = new SitemapGenerator(
            public_path(),
            config('app.url'),
            1000
        );
        
        // Add static pages
        $generator->addUrl(
            (new Url(route('home')))
                ->setLastModification(now())
                ->setChangeFrequency('daily')
                ->setPriority(1.0)
        );
        
        // Add dynamic content
        Post::published()->chunk(100, function ($posts) use ($generator) {
            foreach ($posts as $post) {
                $generator->addUrl(
                    (new Url(route('posts.show', $post)))
                        ->setLastModification($post->updated_at)
                        ->setChangeFrequency('weekly')
                        ->setPriority(0.7)
                );
            }
        });
        
        return $generator->generate();
    }
}



// functions.php or custom plugin
add_action('init', function() {
    if (isset($_GET['generate_sitemap'])) {
        (),
            1000
        );
        
        // Add homepage
        $generator->addUrl(
            (new \Coderden\SitemapGenerator\Url(get_home_url()))
                ->setChangeFrequency('daily')
                ->setPriority(1.0)
        );
        
        // Add posts
        $posts = get_posts(['numberposts' => -1, 'post_status' => 'publish']);
        foreach ($posts as $post) {
            $generator->addUrl(
                (new \Coderden\SitemapGenerator\Url(get_permalink($post)))
                    ->setLastModification(new DateTime($post->post_modified))
                    ->setChangeFrequency('weekly')
                    ->setPriority(0.7)
            );
        }
        
        $generator->generate();
        exit;
    }
});



try {
    $generator = new SitemapGenerator('/invalid/path', 'https://example.com');
    $generator->generate();
} catch (\RuntimeException $e) {
    echo "Error: " . $e->getMessage();
} catch (\InvalidArgumentException $e) {
    echo "Validation error: " . $e->getMessage();
}