WordPress最新免插件实现Sitemap功能

本教程仅供参考,具体请以实际情况为准!

众所周知,用WordPress建站,能不用插件就不用插件(不用插件能够提升网站访问速度)。

最近想弄个sitemap网站地图功能,不用插件的方法网上有很多相关的代码,但是其实好多并不好用。

有的是没有全站网站地图,而有的.xml后缀名需要伪静态设置,特别麻烦。

于是,空闲之余,结合网上的部分素材,自己搞了一个。带样式

全代码贴出来,有需要的朋友可以拿去。

效果截图:

sitemap效果图
sitemap效果图

使用方法:

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
广告位招租

评论0

站点公告

新的一年祝各位站长:虎年吉祥,虎虎生威!新年发小财!新用户注册即送5次下载,全站90%以上资源都可下载。
没有账号? 注册  忘记密码?

社交账号快速登录

'); })();