Custom Sitemap को WordPress मे कैसे बनाए ।

custom sitemapअपने वॉर्डप्रेस वेबसाईट के default साइटमैप को बंद कर के , खुद का custom साइटमैप के लिए नीचे दिए हुए कोड का उपयोग कर सकते है । इस कोड मे आप चाहे तो sitemap URL की limit भी निश्चित कर सकते हैं ।

custom sitemap मे होने वाली खासियत

  1. URL की limit सेट कर सकते हैं ।
  2. नए URL और modified पोस्ट की URL last मे आ जाएंगे ।

Theme मे कैसे setup करें

आप सबसे पहले वॉर्डप्रेस के default साइटमैप को disable करें । disable करने के लिए नीचे दिए हुए कोड को functions.php फाइल मे पेस्ट करें ।

add_filter( 'wp_sitemaps_enabled', '__return_false' );

अब नीचे दिए हुए कोड को अपने वॉर्डप्रेस थीम के functions.php फाइल मे पेस्ट करें ।

function generate_custom_sitemap() {
    $posts_per_sitemap = 300; // Har sitemap mein 500 URLs
    $sitemap_count = 0;
    $post_count = 0;
    $sitemap_index = '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
    $sitemap_index .= '<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";

    // Sabhi posts ko fetch karein
    $args = array(
        'post_type' => 'post',
        'post_status' => 'publish',
        'posts_per_page' => -1,
        'orderby' => 'modified', // Modified date ke hisab se sort karein
        'order' => 'ASC', // Latest updated ya naye URLs sabse pehle
    );
    $query = new WP_Query($args);


    if ($query->have_posts()) {
        $sitemap = '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
        $sitemap .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";


        while ($query->have_posts()) {
            $query->the_post();
            $post_url = get_permalink();
            $sitemap .= '<url>' . "\n";
            $sitemap .= '<loc>' . esc_url($post_url) . '</loc>' . "\n";
            $sitemap .= '<lastmod>' . get_the_modified_date('c') . '</lastmod>' . "\n";
            $sitemap .= '</url>' . "\n";
            $post_count++;


            // Agar 500 URLs ho gaye to naya sitemap banaye
            if ($post_count % $posts_per_sitemap == 0) {
                $sitemap .= '</urlset>';
                $sitemap_filename = 'sitemap-' . $sitemap_count . '.xml';
                file_put_contents(ABSPATH . $sitemap_filename, $sitemap);


                $sitemap_index .= '<sitemap>' . "\n";
                $sitemap_index .= '<loc>' . home_url('/') . $sitemap_filename . '</loc>' . "\n";
                $sitemap_index .= '</sitemap>' . "\n";


                $sitemap_count++;
                $sitemap = '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
                $sitemap .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";
            }
        }


        // Bache hue URLs ke liye sitemap banaye
        if ($post_count % $posts_per_sitemap != 0) {
            $sitemap .= '</urlset>';
            $sitemap_filename = 'sitemap-' . $sitemap_count . '.xml';
            file_put_contents(ABSPATH . $sitemap_filename, $sitemap);


            $sitemap_index .= '<sitemap>' . "\n";
            $sitemap_index .= '<loc>' . home_url('/') . $sitemap_filename . '</loc>' . "\n";
            $sitemap_index .= '</sitemap>' . "\n";
        }


        $sitemap_index .= '</sitemapindex>';
        file_put_contents(ABSPATH . 'sitemap-index.xml', $sitemap_index);
    }
    wp_reset_postdata();
}
add_action('init', 'generate_custom_sitemap');

अब function.php फाइल को सेव कर दें । और अपने साइटमैप को देखने के लिए domain name के बाद sitemap-index.xml लगा कर देख सकते है ।