A-A+

WordPress纯代码制作HTML网站地图

2015年03月09日 PHP开源系统 评论 2 条 阅读 130 views 次

站点的地图制作就不用多说了吧,这在任何站点的优化中,都是必不可缺少的,尤其是 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>";

这个方法列出的是所有的文章,并没有显示分类,两种方法各取所需吧。

标签:

2 条留言  访客:2 条  博主:0 条

  1. 香港服务器租用

    跳跃性太大了,现在都没弄明白该怎么操作。。

  2. wys.me

    好设想,美中不足之处是差个效果图啊?

给我留言