分享各种网络资源
是我乃至整个互联网的精髓所在
 您目前所在位置: 站点首页 » WordPress » WordPress 代码 » 代码实现WordPress的Sitemap功能
  • 代码实现WordPress的Sitemap功能


    Sitemap 可方便网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页。最简单的 Sitemap 形式,就是XML 文件,在其中列出网站中的网址以及关于每个网址的其他元数据(上次更新的时间、更改的频率以及相对于网站上其他网址的重要程度为何等),以便搜索引擎可以更加智能地抓取网站。

    之前一直没有关注这个所谓的sitemap,后来发现其重要性,我就一直在想为什么百度没有收录我的站,现在看来完全就是自己在作死,现在已经添加了sitemap这段代码,代码来自张哥博客(点击进入原文),我从小白的角度看了这篇文章,然后重新组织了一下如下:

    首先我们需要看到上面的sitemap的重要性,不是别的,无论是个人博客还是别的什么,我觉得有人来看你的文章是大多部分站长更新下去的唯一动力,所以怎么让更多人来就是sitema的初衷了。
    接下来就是代码部分:

    <?php
    require('./wp-blog-header.php');
    header("Content-type: text/xml");
    header('HTTP/1.1 200 OK');
    $posts_to_show = 1000; 
    echo '<?xml version="1.0" encoding="UTF-8"?>';
    echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:mobile="http://www.baidu.com/schemas/sitemap-mobile/1/">'
    ?>
    <!-- generated-on=<?php echo get_lastpostdate('blog'); ?> Diy By 张戈博客(http://zhangge.net)-->
    <url>
    <loc><?php echo get_home_url(); ?></loc>
    <lastmod><?php $ltime = get_lastpostmodified(GMT);$ltime = gmdate('Y-m-d\TH:i:s+00:00', strtotime($ltime)); echo $ltime; ?></lastmod>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
    </url>
    <?php
    /* 文章页面 */ 
    header("Content-type: text/xml");
    $myposts = get_posts( "numberposts=" . $posts_to_show );
    foreach( $myposts as $post ) { ?>
    <url>
    <loc><?php the_permalink(); ?></loc>
    <lastmod><?php the_time('c') ?></lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
    </url>
    <?php } /* 文章循环结束 */ ?> 
    <?php
    /* 单页面 */ 
    $mypages = get_pages();
    if(count($mypages) > 0) {
    foreach($mypages as $page) { ?>
    <url>
    <loc><?php echo get_page_link($page->ID); ?></loc>
    <lastmod><?php echo str_replace(" ","T",get_page($page->ID)->post_modified); ?>+00:00</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.6</priority>
    </url>
    <?php }} /* 单页面循环结束 */ ?> 
    <?php
    /* 博客分类 */ 
    $terms = get_terms('category', 'orderby=name&hide_empty=0' );
    $count = count($terms);
    if($count > 0){
    foreach ($terms as $term) { ?>
    <url>
    <loc><?php echo get_term_link($term, $term->slug); ?></loc>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
    </url>
    <?php }} /* 分类循环结束 */?> 
    <?php
    /* 标签(可选) */
    $tags = get_terms("post_tag");
    foreach ( $tags as $key => $tag ) {
    $link = get_term_link( intval($tag->term_id), "post_tag" );
    if ( is_wp_error( $link ) )
    return false;
    $tags[ $key ]->link = $link;
    ?>
    <url>
    <loc><?php echo $link ?></loc>
    <changefreq>monthly</changefreq>
    <priority>0.4</priority>
    </url>
    <?php } /* 标签循环结束 */ ?> 
    </urlset>

    我们先复制以上代码,在桌面创建一个txt文本,之后将代码复制进去并另存为为sitemap.php的文件,这里说一下,代码段中中第9行【Diy By 张戈博客(http://zhangge.net)–】可以修改为自定义文字,其余的位置我个人感觉就不用修改了。

    保存之后通过FTP工具上传至网站根目录即可,我们通过浏览器可以验证了,地址应该是:www.xxx.com/sitemap/php ?进入之后应该就可以看到如下界面了:

    代码实现WordPress的Sitemap功能-BanYuner

    接下来张戈博客的是伪静态:

    伪静态是相对真实静态来讲的,通常我们为了增强搜索引擎的友好面,都将文章内容生成静态页面,但是有的朋友为了实时的显示一些信息。或者还想运用动态脚本解决一些问题。不能用静态的方式来展示网站内容。但是这就损失了对搜索引擎的友好面。怎么样在两者之间找个中间方法呢,这就产生了伪静态技术。就是展示出来的是以html一类的静态页面形式,但其实是用ASP一类的动态脚本来处理的。

    上面是对于伪静态的解释,原作者给出了对于不同环境的不同方式:

    ①、Nginx

    编辑已存在的Nginx伪静态规则,新增如下规则后(平滑)重启nginx即可:

    rewrite ^/sitemap.xml$ /sitemap.php last;

    ②、Apache

    编辑网站根目录的 .htaccess ,加入如下规则:

    RewriteRule ^(sitemap)\.xml$ $1.php

    添加了之后就已经完成了站点sitemap功能了,当然,如果你觉得麻烦的话,可以在官方安装这些插件
    Google XML Sitemaps目前是官方的插件,如果觉得代码不好用或者依然不明白怎么搞,那么请直接在wordpress后台插件界面搜索并安装该插件即可。

    这里注意一下:刚刚我尝试了通过sitemap.php是可以进入的,但是通过sitemap.xml进去就报错,我去原帖看了下,找到了原因:

    RewriteRule ^(sitemap)\.xml$ $1.php

    上面一段代码最好添加在.htaccess 文件开头,如果还有问题,尝试在1.php前面添加一个/

    关注我们 打赏 分享此文

    微信扫码,关注我们

    扫码,支持我

    代码实现WordPress的Sitemap功能

    支付宝(点击图片切换)

    扫码,支持我

    代码实现WordPress的Sitemap功能

    微信(点击图片切换)

    扫码,手机看

    代码实现WordPress的Sitemap功能
    匿名

    个人评价:┃草根博主┃站点无技术含量┃文章内容不够吸引人┃转载内容随处可见┃资源均来自网络┃分享是我的宗旨,也是这个站点存在意义,分享的东西你现在可能不需要,但是我相信只要在某个时间你需要的时候能在这里找到,那么我就是成功的

    代码实现WordPress的Sitemap功能
    3 + 5 =