set_404(); include( get_query_template( '404' ) ); exit; } $sitemap = get_transient('gdk-sitemap'); if( false === $sitemap || empty( $sitemap ) ){ $sitemap = gdk_create_sitemap(); set_transient( 'gdk-sitemap', $sitemap ); } header("Content-type: text/xml"); echo $sitemap; return; } return $template; } add_filter( 'template_include', 'gdk_sitemap_xml_api_handlers', 99 ); function gdk_create_sitemap() { if ( str_replace( '-', '', get_option( 'gmt_offset' ) ) < 10 ) { $tempo = '-0' . str_replace( '-', '', get_option( 'gmt_offset' ) ); } else { $tempo = get_option( 'gmt_offset' ); } if( strlen( $tempo ) == 3 ) { $tempo = $tempo . ':00'; } $postsForSitemap = get_posts( array( 'numberposts' => -1, 'orderby' => 'modified', 'post_type' => array('post'), 'order' => 'DESC', ) ); $sitemap = ''; $sitemap .= ''; $sitemap .= "\n" . '' . "\n"; $sitemap .= "\t" . '' . "\n" . "\t\t" . '' . esc_url( home_url( '/' ) ) . '' . "\n\t\t" . '' . date( "Y-m-d\TH:i:s", current_time( 'timestamp', 0 ) ) . $tempo . '' . "\n\t\t" . 'daily' . "\n\t\t" . '1.0' . "\n\t" . '' . "\n"; foreach( $postsForSitemap as $post ) { setup_postdata( $post); $postdate = explode( " ", $post->post_modified ); $sitemap .= "\t" . '' . "\n" . "\t\t" . '' . get_permalink( $post->ID ) . '' . "\n\t\t" . '' . $postdate[0] . 'T' . $postdate[1] . $tempo . '' . "\n\t\t" . 'Weekly' . "\n\t\t" . '0.5' . "\n\t" . '' . "\n"; } $sitemap .= ''; return $sitemap; } function gdk_clear_sitemap_cache(){ delete_transient( 'gdk-sitemap' ); } add_action('publish_post', 'gdk_clear_sitemap_cache'); add_action('publish_page', 'gdk_clear_sitemap_cache'); add_action('save_post', 'gdk_clear_sitemap_cache' );