WordPress免插件生成完整站点地图(sitemap.xml)的php代码

让这个代码更加完善,可以同时生成首页、文章、单页面、分类和标签的 sitemap!

一、PHP 代码

<?php
require(‘./wp-blog-header.php‘);
header("Content-type: text/xml");
header(‘HTTP/1.1 200 OK‘);
$posts_to_show = 1000;
echo ‘<?xml version="1.0" encoding="UTF-8"?>‘;
echo ‘<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:mobile="http://www.baidu.com/schemas/sitemap-mobile/1/">‘
?>
<!-- generated-on=<?php echo get_lastpostdate(‘blog‘); ?> Diy By 张戈博客(http://zhangge.net)-->
  <url>
      <loc><?php echo get_home_url(); ?></loc>
      <lastmod><?php $ltime = get_lastpostmodified(GMT);$ltime = gmdate(‘Y-m-d\TH:i:s+00:00‘, strtotime($ltime)); echo $ltime; ?></lastmod>
      <changefreq>daily</changefreq>
      <priority>1.0</priority>
  </url>
<?php
/* 文章页面 */
$myposts = get_posts( "numberposts=" . $posts_to_show );
foreach( $myposts as $post ) { ?>
  <url>
      <loc><?php the_permalink(); ?></loc>
      <lastmod><?php the_time(‘c‘) ?></lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
  </url>
<?php } /* 文章循环结束 */ ?>
<?php
/* 单页面 */
$mypages = get_pages();
if(count($mypages) > 0) {
    foreach($mypages as $page) { ?>
    <url>
      <loc><?php echo get_page_link($page->ID); ?></loc>
      <lastmod><?php echo str_replace(" ","T",get_page($page->ID)->post_modified); ?>+00:00</lastmod>
      <changefreq>weekly</changefreq>
      <priority>0.6</priority>
  </url>
<?php }} /* 单页面循环结束 */ ?>
<?php
/* 博客分类 */
$terms = get_terms(‘category‘, ‘orderby=name&hide_empty=0‘ );
$count = count($terms);
if($count > 0){
foreach ($terms as $term) { ?>
    <url>
      <loc><?php echo get_term_link($term, $term->slug); ?></loc>
      <changefreq>weekly</changefreq>
      <priority>0.8</priority>
  </url>
<?php }} /* 分类循环结束 */?>
<?php
 /* 标签(可选) */
$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;
?>
 <url>
      <loc><?php echo $link ?></loc>
      <changefreq>monthly</changefreq>
      <priority>0.4</priority>
  </url>
<?php  } /* 标签循环结束 */ ?>
</urlset>

三、纯静态

Linux 定时任务+wget 定时生成 sitemap.xml

具体实现:将 sitemap.php 放到某个不为人知的目录,然后定时使用 wget 去请求这个文件,并将数据保存为 sitemap.xml 存放到网站根目录就可以了!比如:

如果是启用了 https 的站点,需要加入 --no-check-certificate  的选项

#每天在网站根目录生成一个sitemap.xml diypath为sitemap.php的实际位置(针对https网站)
0 1 * * * wget -O /home/wwwroot/zhangge.net/sitemap.xml --no-check-certificate https://zhangge.net/diypath/sitemap.php  >/dev/null 2>&1

原文地址:https://www.cnblogs.com/xiaobingch/p/10217676.html

时间: 2024-09-29 09:02:39

WordPress免插件生成完整站点地图(sitemap.xml)的php代码的相关文章

php生成百度站点地图sitemap.xml

<?php header("Content-type:text/html;charset=utf-8"); //php生成百度站点地图sitemap.xml //http://www.baidu.com/search/sitemaptools_help.html include("../config.inc.php"); mysql_connect($CFG['db_host'] ,$CFG['db_user'],$CFG['db_pass']) or die

[Asp.net]站点地图SiteMap

引言 在项目中发现使用站点地图的控件,之前没总结过这方面的东西,就写了一个demo测试了一下,这里记录一下,算是总结吧. Web.sitemap 1 <?xml version="1.0" encoding="utf-8" ?> 2 <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > 3 <siteMapNode url=&q

dt7.0中加入站点地图(sitemap.txt)功能输出

为了百度seo需要,看百度站长平台可以提交sitemap.txt地图,顺便加了这个功能,供广大爱好者学习参考. 首先找到:/module/extend/admin/template/setting.tpl.php 找到: <td><?php echo timetodate(filemtime(DT_ROOT.'/sitemaps.xml'));?>   <a href="?moduleid=<?php echo $moduleid;?>&file

.net 生成网站地图 sitemap.xml

1.此处为Demo,借鉴别人的生成 xml //创建xml文件方法一 protected void btn1_OnClick(object sender, EventArgs e) { XmlText xmltext; XmlDocument xmldoc = new XmlDocument(); //加入XML的声明段落 XmlNode xmlnode = xmldoc.CreateXmlDeclaration("1.0", "gb2312", null); xm

网站地图sitemap.xml的格式

URL列表—XML格式及规范说明: 标签名称  属性  标签说明  标签类型  标签限制  可选/必选  urlset  / urlset用来标记整个文档的开头  /  /  必选  url  / url标记每条信息的开始和结束  /  最多出现无限次   必选  loc  / 该条数据的存放地址  url  最小长度1个字符 最大长度256个字符 以"http://"开头   必选  lastmod  / 指该条数据的最新一次更新时间  日期  时间格式为yyyy-mm-dd   可

站点地图静态生成功能

原来的站点地图,因为启用了伪静态,所以直接伪静态指向生成站点地图的PHP文件,HTML地图无所谓,是正常的,而XML地图,则一直不能显示.从代码里查看,是正常的,后来用http状态查询发现,xml的返回状态是 Content-Type: text/xml 而启用伪静态的sitemap.xml返回的状态还是根html的代码返回状态是一样的 Content-Type: text/html; charset=utf-8 尝试了很多办法解决,发现用PHP返回header值也还是不行,必须静态生成,需要在

Mvc中使用MvcSiteMapProvider实现站点地图之基础篇

MvcSiteMapProvider 是针对 ASP.NET MVC 中,提供菜单. 网站地图. 站点地图路径功能,以及更多的工具.它提供配置使用一个可插入的体系结构,可以是 XML. 数据库或动态生成导航结构的能力. 如图: 在MvcSiteMapProvider 中有三种方式来实现站点地图:XML,.NET Attributes,IDynamicNodeProvider. 下面,我们先通过XML方式来实现站点地图. 1.新建Mvc4项目,选择Internet应用程序.然后通过Nuget来安装

利用ASP.NET里自带的站点地图工具制作网站站点地图

站点地图很方便能快速给我们导航我们要去访问的地址,能按层级关系分门别类,给用户一个很好的用户体验,很好的看到自己当前所在的网站位置 站点地图,又称网站地图,它就是一个页面,上面放置了网站上所有页面的链接.大多数人在网站上找不到自己所需要的信息时,可能会将网站地图作为一种补救措施.搜索引擎蜘蛛非常喜欢网站地图. 网站地图是一个网站所有链接的容器.很多网站的连接层次比较深,蜘蛛很难抓取到,网站地图可以方便搜索引擎蜘蛛抓取网站页面,通过抓取网站页面,清晰了解网站的架构,网站地图一般存放在根目录下并命名

Dynamics CRM 不同的站点地图下设置默认不同的仪表板

CRM的默认仪表板只能设置一个,也就是说每个引用仪表板的站点地图下点开仪表板后都是看到的默认仪表板,例如我下图中的"日常维修仪表板" 那如果我要在不同的站点地图下看到的默认仪表板不同怎么设置呢,可以导出站点地图的xml看下SubArea下有个叫DefaultDashboard的属性,  设置为你要的那个仪表板的id即可. 当然导入导出xml比较麻烦也容易出错,比较偷懒的方法就是使用工具,我们强大的XrmToolBox就可以搞定.