A-A+
WordPress纯代码制作HTML网站地图
站点的地图制作就不用多说了吧,这在任何站点的优化中,都是必不可缺少的,尤其是 wordpress 博客中,制作一个 xml 之类的站点地图就更有必要了,只要我们在网上仔细的去发现,只要是SEO做得很棒的站点,基本上都有站点地图,不仅站点的结构更清晰了,而且对于搜索引擎的优化的体验更好了。
之前有介绍过 wordpress 中使用的 xml 地图生成插件 Google XML Sitemaps,安装这款插件,夏日博客也已经介绍过了,可以参考之前的文章。
如果经常玩 wordpress 的同学,还会注意到 wordpress 还有一个存档的功能,其实这可以看作是 wordpress 的站内地图,在大多的 wordpress 主题中都有存档功能,这是直接读取的 sql,并不需要太强的技术,下面我们来看一下如何使用 sql 读取数据库来实现文章的地图显示。
SQL读取数据库,就是制作一个站内文章存档的 sitemap 效果,首先创建一个自定义的页面,关于这个存档的页面链接可以手动来进行链接就可以了,我们先来看一下具体的步骤操作:
新建一个模板页面,比如在当前目录下新建一个 sitemap.php 的文件,头部加入如下的代码:
<?php /* * Template Name: sitemap * @author: Ludou * @Blog : https://www.xiariboke.net/ */
下面是关键的代码了,就是从数据库中调取所有的文章分类以及文章所有文章标题链接,代码如下:
<div> <?php $categoryPosts = $wpdb->get_results(" SELECT post_title, ID, post_name, slug, wp_terms.term_id AS catID, wp_terms.name AS categoryname FROM wp_posts, wp_term_relationships, wp_term_taxonomy, wp_terms WHERE wp_posts.ID = wp_term_relationships.object_id AND wp_terms.term_id = wp_term_taxonomy.term_id AND wp_term_taxonomy.term_taxonomy_id = wp_term_relationships.term_taxonomy_id AND wp_term_taxonomy.taxonomy = "category" AND wp_posts.post_status = "publish" AND wp_posts.post_type = "post" ORDER BY wp_terms.term_id, wp_posts.post_date DESC");$postID = 0; if ( $categoryPosts ) : $category = $categoryPosts[0]->catID; foreach ($categoryPosts as $key => $mypost) : if($postID == 0) { echo "<h3>分类: <a title="\".$mypost->categoryname."" href="".get_category_link($mypost->catID)."">".$mypost->categoryname."</a></h3>"; echo "<ul>"; }if($category == $mypost->catID) { ?> <li><a title="<?php echo $mypost->post_title; ?>" href="<?php echo get_permalink( $mypost->ID ); ?>"><?php echo $mypost->post_title; ?></a></li> <?php $category = $mypost->catID; $postID++; } else { echo "</ul>"; echo "<h3>分类: <a title="\".$mypost->categoryname."" href="".get_category_link($mypost->catID)."">".$mypost->categoryname."</a></h3>"; echo "<ul>"; ?> <li><a title="<?php echo $mypost->post_title; ?>" href="<?php echo get_permalink( $mypost->ID ); ?>"><?php echo $mypost->post_title; ?></a></li> <?php $category = $mypost->catID; $postID = 1; } endforeach; endif; echo "</ul>"; ?> <h3>页面</h3> <ul> <?php // 读取所有页面 $mypages = $wpdb->get_results(" SELECT post_title, post_name, ID FROM {$wpdb->prefix}posts WHERE post_status = "publish" AND post_type = "page"");if ( $mypages ) : foreach ($mypages as $mypage) : ?> <li><a title="<?php echo $mypage->post_title; ?>" href="<?php echo get_permalink( $mypage->ID ); ?>"><?php echo $mypage->post_title; ?></a></li> <?php endforeach;endif; ?> </ul> <p><a href="https://www.xiariboke.net/sitemap.xml">sitemap.xml</a></p> </div>
这样在我们创建页面的时候,直接选择右侧的模板 sitemap 就可以了。
下面再介绍一种使用 wordpress 内置函数来实现网站地图的方法,把上面读取数据库内容部分的代码更换为如下:
echo "<ul>"; wp_get_archives("type=postbypost&show_post_count=1"); echo "</ul>";
这个方法列出的是所有的文章,并没有显示分类,两种方法各取所需吧。
跳跃性太大了,现在都没弄明白该怎么操作。。
好设想,美中不足之处是差个效果图啊?