Создать карту сайта без плагина – получить только родительские страницы?

Я хочу создать карту сайта, которая включает только родительские страницы.

Это код, который я обычно использую для получения только родительских страниц:

$args = array( 'post_type' => 'page', 'post_parent' => 0, 'orderby' => 'rand', 'posts_per_page' => 3, 'post_status' => array('publish'), ); $parents = new WP_Query($args); 

И я использовал этот код Sitemap из этого ответа :

 add_action( "save_post", "eg_create_sitemap" ); function eg_create_sitemap() { $postsForSitemap = get_posts( array( 'numberposts' => -1, 'orderby' => 'modified', 'post_type' => array( 'post', 'page' ), 'order' => 'DESC' ) ); $sitemap = '<?xml version="1.0" encoding="UTF-8"?>'; $sitemap .= "\n" . '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n"; foreach( $postsForSitemap as $post ) { setup_postdata( $post ); $postdate = explode( " ", $post->post_modified ); $sitemap .= "\t" . '<url>' . "\n" . "\t\t" . '<loc>' . get_permalink( $post->ID ) . '</loc>' . "\n\t\t" . '<lastmod>' . $postdate[0] . '</lastmod>' . "\n\t\t" . '<changefreq>monthly</changefreq>' . "\n\t" . '</url>' . "\n"; } $sitemap .= '</urlset>'; $fp = fopen( ABSPATH . "sitemap.xml", 'w' ); fwrite( $fp, $sitemap ); fclose( $fp ); } 

Он получает все страницы, так что это не то, что мне нужно, и создал файл sitemap.xml в корне моего WP (его там не было) .

Затем я изменил, но он не работает – он все равно возвращает все страницы. Поэтому я удалил файл sitemap.xml в свой корень, но получаю ошибку 404.

Зачем? Как так?

Вы должны слегка изменить свой запрос на свой код выше:

  $postsForSitemap = get_posts( array( 'numberposts' => -1, 'orderby' => 'rand', 'post_type' => array( 'page' ), 'post_parent' => 0, 'order' => 'DESC' ) ); 

если вы хотите, чтобы вся страница не была родительской, поскольку вы использовали только для получения родительских страниц. Он создаст файл sitemap.xml и обновит ссылки (URL) с помощью последних последних (последних изменений) после создания / обновления страницы.

Надеюсь, это поможет!!