Custom Sitemap को WordPress मे कैसे बनाए ।
अपने वॉर्डप्रेस वेबसाईट के default साइटमैप को बंद कर के , खुद का custom साइटमैप के लिए नीचे दिए हुए कोड का उपयोग कर सकते है । इस कोड मे आप चाहे तो sitemap URL की limit भी निश्चित कर सकते हैं ।
custom sitemap मे होने वाली खासियत
- URL की limit सेट कर सकते हैं ।
- नए 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 लगा कर देख सकते है ।