本教程仅供参考,具体请以实际情况为准!
众所周知,用WordPress建站,能不用插件就不用插件(不用插件能够提升网站访问速度)。
最近想弄个sitemap网站地图功能,不用插件的方法网上有很多相关的代码,但是其实好多并不好用。
有的是没有全站网站地图,而有的.xml后缀名需要伪静态设置,特别麻烦。
于是,空闲之余,结合网上的部分素材,自己搞了一个。带样式
全代码贴出来,有需要的朋友可以拿去。
效果截图:

使用方法:
1、在网站根目录新建sitemap.php文件,将sitemap.php的代码复制进去。
2、在网站根目录或者任意二级目录创建sitemap.xsl文件,并在sitemap.php中引入文件,引入方法为:
- 在代码中搜索找到:<?xml-stylesheet type=”text/xsl” href=”https://www.moxiaoseo.com/wp-content/sitemap.xsl”?>
- 将域名+目录换成你自己的也就是“https://www.moxiaoseo.com/wp-content”这部分。
3、这时候访问http://你的域名/sitemap.php就会自动更新sitemap.xml了,可以提交sitemap到各个搜索引擎了。
演示地址:https://www.moxiaoseo.com/sitemap.xml
sitemap.php文件代码如下:
<?php
include ( "wp-config.php" ) ;
require_once (ABSPATH.'./wp-blog-header.php');
$ltime = get_lastpostmodified("GMT");
$ltime = gmdate('Y-m-d\TH:i:s+00:00', strtotime($ltime));
$posts_to_show = 2000;
$str = '<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="https://www.moxiaoseo.com/wp-content/sitemap.xsl"?>
<!-- sitemap-generator-url="http://www.arnebrachhold.de" sitemap-generator-version="4.1.1" -->
<!-- generated-on="2022/01/11 13:49" -->
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:mobile="http://www.baidu.com/schemas/sitemap-mobile/1/">';
$str.="
<url>
<loc>".get_home_url()."</loc>
<lastmod>".$ltime."</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
\r\n
";
//文章 code by moxiaoseo.com
$myposts = get_posts( "numberposts=".$posts_to_show );
foreach( $myposts as $post ) {
$str.="<url>\r\n";
$str.="<loc>".urldecode(get_permalink())."</loc>\r\n";
$str.="<lastmod>".str_replace(" ","T",get_page($page->ID)->post_modified)."</lastmod>\r\n";
$str.="<changefreq>always</changefreq>\r\n";
$str.="<priority>0.9</priority>\r\n";
$str.="</url>\r\n";
}
//页面 code by moxiaoseo.com
$mypages = get_pages();
if(count($mypages) > 0) {
foreach($mypages as $page) {
$str.="<url>\r\n";
$str.="<loc>".urldecode(get_page_link($page->ID))."</loc>\r\n";
$str.="<lastmod>".str_replace(" ","T",get_page($page->ID)->post_modified)."</lastmod>\r\n";
$str.="<changefreq>monthly</changefreq>\r\n";
$str.="<priority>0.5</priority>\r\n";
$str.="</url>\r\n";
}
}
//标签 code by moxiaoseo.com
$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;
$str.="<url>\r\n";
$str.="<loc>".urldecode($link)."</loc>\r\n";
$str.="<lastmod>".str_replace(" ","T",get_page($page->ID)->post_modified)."</lastmod>\r\n";
$str.="<changefreq>daily</changefreq>\r\n";
$str.="<priority>0.5</priority>\r\n";
$str.="</url>\r\n";
}
//分类 code by moxiaoseo.com
$terms = get_terms('category', 'orderby=name&hide_empty=0' );
$count = count($terms);
if($count > 0){
foreach ($terms as $term) {
$str.="<url>\r\n";
$str.="<loc>".urldecode(get_term_link($term, $term->slug))."</loc>\r\n";
$str.="<lastmod>".str_replace(" ","T",get_page($page->ID)->post_modified)."</lastmod>\r\n";
$str.="<changefreq>weekly</changefreq>\r\n";
$str.="<priority>0.3</priority>\r\n";
$str.="</url>\r\n";
}
}
$str.="</urlset>";
file_put_contents('./sitemap.xml',$str);
echo '更新 sitemap.xml 成功! <a href="/sitemap.xml"> 查看</a>';
?>
sitemap.xsl文件代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:html="http://www.w3.org/TR/REC-html40"
xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes" />
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>XML Sitemap - 魔效源码</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="robots" content="noindex,follow" />
<style type="text/css">
body {
font-family:"Lucida Grande","Lucida Sans Unicode",Tahoma,Verdana;
font-size:13px;
}
h1{
text-align:left;
}
#intro {
background-color:#CFEBF7;
border:1px #2580B2 solid;
padding:5px 13px 5px 13px;
margin:10px;
}
#intro p {
line-height: 16.8667px;
}
#intro strong {
font-weight:normal;
}
td {
font-size:11px;
}
td:not(:first-child){
text-align: center;
}
th {
text-align:left;
padding-right:30px;
font-size:11px;
}
th:not(:first-child){
text-align:center;
}
tr.high {
background-color:whitesmoke;
}
#footer {
padding:2px;
margin-top:10px;
font-size:8pt;
color:gray;
}
#footer a {
color:gray;
}
a {
color:black;
}
</style>
</head>
<body>
<xsl:apply-templates></xsl:apply-templates>
</body>
</html>
</xsl:template>
<xsl:template match="sitemap:urlset">
<h1>Xml Sitemap</h1>
<!-- <div id="intro">
<p>
This is a XML Sitemap which is supposed to be processed by search engines which follow the XML Sitemap standard like Ask.com, Bing, Google and Yahoo.<br />
It was generated using the <a rel="external nofollow" href="http://wordpress.org/">WordPress</a> content management system and the <strong><a rel="external nofollow" href="http://www.arnebrachhold.de/redir/sitemap-home/" title="Google (XML) Sitemaps Generator Plugin for WordPress">Google Sitemap Generator Plugin</a></strong> by <a rel="external nofollow" href="http://www.arnebrachhold.de/">Arne Brachhold</a>.<br />
You can find more information about XML sitemaps on <a rel="external nofollow" href="http://sitemaps.org">sitemaps.org</a> and Google's <a rel="external nofollow" href="http://code.google.com/p/sitemap-generators/wiki/SitemapGenerators">list of sitemap programs</a>.
</p>
</div> -->
<div id="content">
<table cellpadding="5">
<tr style="border-bottom:1px black solid;">
<th>网址(Url)</th>
<th>优先权(Priority)</th>
<th>更改频率(Change frequency)</th>
<th>最后修改时间(Last modified)</th>
</tr>
<xsl:variable name="lower" select="'abcdefghijklmnopqrstuvwxyz'"/>
<xsl:variable name="upper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
<xsl:for-each select="./sitemap:url">
<tr>
<xsl:if test="position() mod 2 != 1">
<xsl:attribute name="class">high</xsl:attribute>
</xsl:if>
<td>
<xsl:variable name="itemURL">
<xsl:value-of select="sitemap:loc"/>
</xsl:variable>
<a href="{$itemURL}">
<xsl:value-of select="sitemap:loc"/>
</a>
</td>
<td>
<xsl:value-of select="concat(sitemap:priority*100,'%')"/>
</td>
<td>
<xsl:value-of select="concat(translate(substring(sitemap:changefreq, 1, 1),concat($lower, $upper),concat($upper, $lower)),substring(sitemap:changefreq, 2))"/>
</td>
<td>
<xsl:value-of select="concat(substring(sitemap:lastmod,0,11),concat(' ', substring(sitemap:lastmod,12,5)))"/>
</td>
</tr>
</xsl:for-each>
</table>
</div>
</xsl:template>
</xsl:stylesheet>
原文链接:https://www.moxiaoseo.com/mx-620.html,转载请注明出处。
评论0