分享
三行代码  ›  专栏  ›  技术社区  ›  Prism Development Team group e

在wordpress中自动生成站点地图

  •  -2
  • Prism Development Team group e  · 技术社区  · 4 天前

    在wordpress自定义主题中是否有自动生成站点地图的代码。

    我不使用插件是因为

    1.我不要求所有网页都列在网站地图上

    现在我需要一个简单的方法(代码)来生成我博客的站点地图。

    1 回复  |  直到 4 天前
        1
  •  1
  •   jlewkovich Ajil    4 天前

    这里有一个简单的代码,你需要添加到你的主题函数文件中,以便在每个博客发布时生成网站地图 blog 这也可以用于任何自定义插件。

    add_action("publish_post", "eg_create_sitemap");
    
    add_action( "save_post", "eg_create_sitemap" );  
    
    function eg_create_sitemap() {
    
        $postsForSitemap = get_posts( array(
            'numberposts' => -1,
            'orderby'     => 'modified',
            'post_type'   => array( 'post'),
            '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_blog.xml", 'w' );
        fwrite( $fp, $sitemap );
        fclose( $fp );
    
    }