代码实现WordPress网站HTML地图

常见的网站地图有两种,一种是 XML 格式的地图,另一种是 HTML 格式地图(百度网站地图不是百度地图!请各位小白搜索的时候关键词别用错,别跑来问我百度地图怎么弄,我懂不起。)。XML 格式的网站地图是给搜索引擎蜘蛛看的,而 HTML 网站地图是给用户看的,可以展现自己博客的所有文章和所有页面,能够增加网站的用户体验。在前面的一篇文章中,有介绍过 wordpress 网站地图的添加方法,是用 wordpress 插件来实现的,今天介绍的网站地图添加方法是用代码来实现的。

刚开始建站的时候我觉得柳城的百度 XMLSitemap 生成器插件挺好用的,然后就一直用它,直到作者不更新了。今天介绍的就是不使用插件完成 wordpress 代码实现网站地图 sitemap 的 html 和 xml 的方法,本站以前一直用着柳城的百度地图插件,今天心血来潮,想着还是直接代码吧,少用插件的好!虽然改点代码仍然可以使用,但是多多少少还是有点小问题的。比如谷歌会说他的插件生成的 html 版本网站地图页面可点击项间隔太小,不适合移动端使用的问题,所以我决定自己做一个网站地图页面。
代码实现WordPress网站HTML地图-云模板

实现步骤

首先是要有一个前端模板,这是最重要的,不然不好看,这个我就不提供了。然后就是使用 WordPress 函数循环输出整站页面地址了,由于我做成了页面,自带头部导航与底部,所以我只需要所有页面、所有文章、所有标签,具体看下面代码。

1、输出所有页面地址

  1. <?php
  2.     $mypages = get_pages();
  3.     if(count($mypages) > 0) {
  4.         foreach($mypages as $page) {
  5.             echo get_page_link($page->ID);//输出页面地址
  6.             echo $page->post_title;//输出页面标题
  7.         }
  8.      }
  9. ?>

2、输出所有文章地址

  1. <?php
  2.     $myposts = get_posts( "numberposts=1000");//这里输出1000条
  3.     if(count($myposts) > 0) {
  4.        foreach( $myposts as $post ) {
  5.             echo the_permalink();//输出文章地址
  6.             echo the_title();//输出文章标题
  7.         }
  8.      }
  9. ?>

3、输出所有标签地址

  1. <?php
  2.    $tags = get_terms("post_tag");
  3.    foreach ( $tags as $key => $tag ) {
  4.         echo get_term_link( intval($tag->term_id), "post_tag" );//输出标签地址
  5.         echo $tag->name;//输出标签标题
  6.     }
  7. ?>

完整步骤

在新建一个 PHP 文件页面 sitemap.php,在里面加上以下代码,再放入主题下的页面文件夹中。

  1.     <?php
  2.     /*
  3.      Template Name: 站点地图
  4.     */
  5.     ?>
  6.     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  7.     <html xmlns="http://www.w3.org/1999/xhtml">
  8.     <head profile="http://gmpg.org/xfn/11">
  9.     <meta http-equiv="Content-Type" content="text/html; charset=<?php bloginfo( 'charset' ); ?>" />
  10.     <title>站点地图 - <?php bloginfo('name'); ?></title>
  11.     <meta name="keywords" content="站点地图,<?php bloginfo('name'); ?>" />
  12.     <meta name="copyright" content="<?php bloginfo('name'); ?>" />
  13.     <link rel="canonical" href="<?php echo get_permalink(); ?>" />
  14.     <style type="text/css">
  15.         body {font-family: Microsoft Yahei,Verdana;font-size:13px;margin:0 auto;color: #000000;background: #ffffff;width: 990px;margin: 0 auto}
  16.         a:link,a:visited {color:#000;text-decoration:none;}
  17.         a:hover {color:#08d;text-decoration:none;}
  18.         h1,h2,h3,h4,h5,h6 {font-weight:normal;}
  19.         img {border:0;}
  20.         li {margin-top: 8px;}
  21.         .page {padding: 4px; border-top: 1px #EEEEEE solid}
  22.         .author {background-color:#EEEEFF; padding: 6px; border-top: 1px #ddddee solid}
  23.         #nav, #content, #footer {padding: 8px; border: 1px solid #EEEEEE; clear: both; width: 95%; margin: auto; margin-top: 10px;}
  24.     </style>
  25.     </head>
  26.     <body vlink="#333333" link="#333333">
  27.     <h2 style="text-align: center; margin-top: 20px"><?php bloginfo('name'); ?>'s SiteMap </h2>
  28.     <center></center>
  29.     <div id="nav"><a href="<?php echo esc_url( home_url() ); ?>/"><strong><?php bloginfo('name'); ?></strong></a> &raquo; <a href="<?php echo get_permalink(); ?>">站点地图</a></div>
  30.     <div id="content">
  31.     <h3>最新文章</h3>
  32.     <ul>
  33.     <?php
  34.     $previous_year = $year = 0;
  35.     $previous_month = $month = 0;
  36.     $ul_open = false;
  37.     $myposts = get_posts('numberposts=-1&orderby=post_date&order=DESC');
  38.     foreach($myposts as $post) :
  39.     ?>
  40.     <li><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" target="_blank"><?php the_title(); ?></a></li>
  41.     <?php endforeach; ?>
  42.     </ul>
  43.     </div>
  44.     <div id="content">
  45.     <li class="categories">分类目录<ul>
  46.     <?php wp_list_categories('title_li='); ?>
  47.     </ul></li>
  48.     </div>
  49.     <div id="content">
  50.     <li class="categories">单页面</li>
  51.     <?php wp_page_menu( $args ); ?>
  52.     </div>
  53.     <div id="footer">查看博客首页: <strong><a href="<?php echo esc_url( home_url() ); ?>/"><?php bloginfo('name'); ?></a></strong></div><br />
  54.     <center>
  55.     <div style="text-algin: center; font-size: 11px">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>
  56.     </center>
  57.     </body>
  58.     </html>

以上代码只能作为参考,标签根据自己实际情况进行修改,然后进入 wordpress 后台,创建新的页面,起名为网站地图,(名字随便)内容不需要填写。点击快速编辑按钮,选择模板–网站地图,这样 wordpress 网站地图就制作出来了。

原创文章,作者:DavidWu,如若转载,请注明出处:https://www.davidwu.net/archives/95421

WordPress安全防护插件
服务项目 服务内容 收费标准(元)
开发定制 WordPress主题/插件开发定制 (以最终需求为准)
主题/插件汉化 汉化团队WordPress主题/插件,翻译率95% (以标的主题/插件的句子数量为准)
服务器环境配置 基于您现有服务器,搭建配置网站运行环境,结合我们多年来实战经验,可完美支持WordPress等PHP程序运行,并配置伪静态规则、优化目录权限等问题。服务器我们强烈推荐使用Linux系统。 100元/次
网站托管 若贵站目前尚无技术人员,无法完成服务器环境配置,可选择我们的网站托管服务,直接交付正常运行的WordPress站点,并且无需担心服务器的后续维护工作,一切都由我们来帮您完成。 标配套餐:1000元/年/站点 高配套餐:联系客服获取
网站加速优化 从服务器后端配置优化到WordPress数据库缓存、前端页面缓存、JS和CSS压缩合并,全方位优化网站加载速度,实现秒开。(此服务仅针对(云)服务器/VPS) 500元/次(仅站内优化200元/次)
主题配置 本站所有主题均支持,可快速实现,若有任何问题可以咨询客服解决,若您希望我们提供配置服务,可选购此服务。 英文主题安装 60元/次 汉化主题安装 30元/次
HTTPS配置 HTTPS已经不断普及,并且有着更高的安全性以及SEO上的优待。该服务收取的为服务费,SSL证书产生的费用请自行承担。 100元/次
网站搬家 迁移网站所有文件和数据库信息、网站相关配置的调整、以及迁移中的疑难问题故障排除。 标准收费:500元/次 若网站数据量大,需协商
网站运维 提供整站的运维服务,保证网站正常运行。包含:网站故障定位及排除、网站数据备份和恢复、网站攻击及木马等问题的处理等 标准收费:2000元/年 IP 5000以上需协商

发表评论

电子邮件地址不会被公开。 必填项已用*标注

51建站客服微信二维码
点击这里购买