涉及过SEO的朋友一定知道搜索引擎进入一个站点首先会去查找站点的robots.txt文件,而robots协议中就有专门用来书写sitemap的要求,告诉蜘蛛本站点有哪些内容,路径是什么然后让蜘蛛去抓取。大多数站长对于生成wordpress站点的sitemap文件第一反应就是插件,但是插件使用多了不免影响网站速度,在此檀烟就给大家来一个用PHP代码直接生成的办法。

首先我们用到的是wordpress的模板机制,也就是先创建一个word press的地图页面模板,然后添加URL改写代码,已达到伪静态化的结果。首先我们在主题目录创建sitemap.php然后粘贴下边代码

<?php
/*
Template Name: sitemap
*/
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head profile="http://gmpg.org/xfn/11">
<meta http-equiv="Content-Type" content="text/html; charset=<?php bloginfo( 'charset' ); ?>" />
<title>sitemap - <?php bloginfo('name'); ?></title>
<meta name="keywords" content="sitemap,<?php bloginfo('name'); ?>" />
<meta name="copyright" content="<?php bloginfo('name'); ?>" />
<link rel="canonical" href="<?php echo get_permalink(); ?>" />
<style type="text/css">
body {font-family: Microsoft Yahei,Verdana;font-size:13px;margin:0 auto;color: #000000;background: #ffffff;width: 990px;margin: 0 auto}
a:link,a:visited {color:#000;text-decoration:none;}
a:hover {color:#08d;text-decoration:none;}
h1,h2,h3,h4,h5,h6 {font-weight:normal;}
img {border:0;}
li {margin-top: 8px;}
.page {padding: 4px; border-top: 1px #EEEEEE solid}
.author {background-color:#EEEEFF; padding: 6px; border-top: 1px #ddddee solid}
#nav, #content, #footer {padding: 8px; border: 1px solid #EEEEEE; clear: both; width: 95%; margin: auto; margin-top: 10px;}
</style>
// 样式文件自己根据需要修改
</head>
<body vlink="#333333" link="#333333">
<h2 style="text-align: center; margin-top: 20px"><?php bloginfo('name'); ?>&nbsp;站点地图</h2>
<center></center>
<div id="nav">你现在所在的位置:<a href="<?php bloginfo('url'); ?>/"><strong><?php bloginfo('name'); ?></strong></a> &raquo; <a href="<?php echo get_permalink(); ?>">站点地图</a></div>
<div id="content">
<li><h3>最新文章</h3></li>
<ul>
<?php
$previous_year = $year = 0;
$previous_month = $month = 0;
$ul_open = false;

$myposts = get_posts('numberposts=-1&orderby=post_date&order=DESC');

foreach($myposts as $post) :
?>
<li><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" target="_blank"><?php the_title(); ?></a></li>
<?php endforeach; ?>
</ul>
</div>
<div id="content">
<li class="categories">分类目录<ul>
<?php wp_list_categories('title_li='); ?>
</ul></li>
</div>
<div id="content">
<li class="categories">单页面</li>
<?php wp_page_menu( $args ); ?>
</div>
<center>
<div style="text-algin: center; font-size: 11px; margin-top:10px"><strong><a href="<?php bloginfo('url'); ?>" target="_blank"><?php bloginfo('name'); ?></a></strong>&nbsp;&nbsp;&nbsp;<strong><a href="<?php bloginfo('url'); ?>/sitemap.xml" target="_blank">XML版SiteMap</a></strong> Latest Update: <?php $last = $wpdb->get_results("SELECT MAX(post_modified) AS MAX_m FROM $wpdb->posts WHERE (post_type = 'post' OR post_type = 'page') AND (post_status = 'publish' OR post_status = 'private')");$last = date('Y-m-d G:i:s', strtotime($last[0]->MAX_m));echo $last; ?><br /><br /></div>

 

</center>
</body>
</html>

现在我们制作成功了sitmap文件只需要在后台新建页面,选择sitema模板

这样之后我们可以获得https://www.yudepeng.com/sitemap文件,但是搜索引擎可不认识,那么我们就需要做URL改写了。我们需要将下边提供的单页伪静态化代码,添加到自己的主题模板。

function custom_page_rules() {
global $wp_rewrite;
/** page页面自定义URL样式 **/
$wp_rewrite->page_structure = $wp_rewrite->root . '/%pagename%.html';
}
add_action( 'init', 'custom_page_rules' );

添加之后我们需要将sitmap单页重新保存,并且在设置里边修改伪静态规则,然后重新保存。提供本博的以供参考。