
您现在的位置是:首页 > WordPress教程WordPress教程
WordPress生成网站地图?这几招包教包会,别再瞎折腾了!
WP集市
2025-08-21
【WordPress教程】
1851人已围观
WordPress生成网站地图?这几招包教包会,别再瞎折腾了!
做WordPress站的兄弟,是不是总被SEO插件提示“网站地图未生成”?别慌,这玩意儿真不难,今天手把手教你,两种方法,从纯小白到半吊子程序员都能看懂,看完不会你来找我(开玩笑的,找我也没用,多看两遍肯定会)。
先说为啥要搞这玩意儿
简单说,网站地图就是给搜索引擎爬虫画的“导航图”,告诉它“我这站有哪些页面、啥时候更新的”,爬得快收录就快。尤其新站,没外链没权重,有个sitemap能少走半个月弯路。行了,不扯理论,直接上干货。
方法一:插件法(新手首选,无脑操作)
不想写代码?怕改坏网站?用插件!90%的人都这么干,别觉得用插件low,工具就是拿来用的,我自己小站也用插件,效率第一。
推荐插件:Yoast SEO(最主流,功能全)或Google XML Sitemaps(轻量,专注sitemap),这里以Yoast为例,毕竟用的人多,问题好搜。
步骤:
后台→插件→安装插件,搜“Yoast SEO”,点安装→启用。别告诉我搜不到,拼音打错了吧?
启用后左边菜单会多一个“SEO”,点进去→常规→功能标签(在上面一排,不是左边的功能)。
往下拉,找到“XML站点地图”,后面有个“查看站点地图”按钮,点它!齐活!

踩坑提示:启用后点“查看”没反应?先禁用其他SEO插件(比如All in One SEO),冲突了!之前帮朋友建站,他装了仨SEO插件,结果哪个都出不来sitemap,删到剩一个就好了,别学他,插件不是越多越好。
方法二:手动代码法(适合折腾党,自定义拉满)
不想用插件?或者插件生成的sitemap不符合需求(比如想排除标签页、草稿)?那就自己写代码,其实不难,跟着抄就行,记得先备份主题!
核心思路:用WordPress的钩子(hook)注册sitemap,再生成XML文件,最后通过URL访问。
具体步骤:
打开主题文件夹(后台→外观→主题文件编辑器,选你当前用的主题),找到
functions.php
(小心!这文件改错了网站会白屏,先复制内容到记事本备份,出事了粘贴回去)。往
functions.php
里加代码,别直接糊,先在记事本写好,检查没红波浪线(就是语法错误)再复制。
代码示例(复制这段,别改参数,先用着):
// 注册站点地图索引 function custom_sitemap_init() { add_rewrite_rule( 'sitemap_index\.xml$', 'index.php?sitemap=index', 'top' ); add_rewrite_rule( '([^/]+?)-sitemap\.xml$', 'index.php?sitemap=$matches[1]', 'top' ); } add_action('init', 'custom_sitemap_init'); // 生成站点地图内容 function custom_sitemap_render() { if (!isset($_GET['sitemap'])) return; $sitemap = sanitize_text_field($_GET['sitemap']); header('Content-Type: text/xml; charset=utf-8'); echo '<?xml version="1.0" encoding="UTF-8"?>' . "\n"; if ($sitemap === 'index') { // 索引文件,包含所有子sitemap echo '<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n"; echo ' <sitemap><loc>' . home_url('post-sitemap.xml') . '</loc></sitemap>' . "\n"; // 文章sitemap echo ' <sitemap><loc>' . home_url('page-sitemap.xml') . '</loc></sitemap>' . "\n"; // 页面sitemap echo '</sitemapindex>'; } elseif ($sitemap === 'post') { // 文章sitemap,输出所有已发布文章 $posts = get_posts(['post_type' => 'post', 'posts_per_page' => -1, 'post_status' => 'publish']); echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n"; foreach ($posts as $post) { echo ' <url>' . "\n"; echo ' <loc>' . get_permalink($post) . '</loc>' . "\n"; echo ' <lastmod>' . get_the_modified_date('Y-m-d', $post) . '</lastmod>' . "\n"; echo ' </url>' . "\n"; } echo '</urlset>'; } elseif ($sitemap === 'page') { // 页面sitemap,输出所有已发布页面 $pages = get_pages(['post_status' => 'publish']); echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n"; foreach ($pages as $page) { echo ' <url>' . "\n"; echo ' <loc>' . get_permalink($page) . '</loc>' . "\n"; echo ' <lastmod>' . get_the_modified_date('Y-m-d', $page) . '</lastmod>' . "\n"; echo ' </url>' . "\n"; } echo '</urlset>'; } exit; // 必须exit,不然会输出多余HTML } add_action('template_redirect', 'custom_sitemap_render');
解释:
add_rewrite_rule
:重写URL,让域名/sitemap_index.xml
能访问到,不然直接访问会404。template_redirect
:在页面加载前输出XML,避免被主题HTML干扰。
访问方法:保存代码后,去后台→设置→固定链接,啥都别动,点“保存更改”(更新rewrite规则,这步忘了能卡你半小时,别问我怎么知道的),然后访问域名/sitemap_index.xml
,能看到XML文件就成功了!
进阶:排除不需要的页面(比如标签、草稿)
插件法:Yoast里→SEO→搜索外观→ taxonomies(分类法),把“标签”设为“noindex”,sitemap里就不会有了。
代码法:在上面的$posts = get_posts(...)
里加条件,比如排除草稿:'post_status' => 'publish'
(已经加了),排除特定ID:'post__not_in' => [123, 456]
(123是页面ID,在后台页面列表能看到)。
说到排除,想起之前给客户做站,他非要把“联系我们”排除,说怕被垃圾邮件骚扰,我劝了半天“sitemap只是告诉爬虫有这个页,收不收录看内容”,他不听,最后还是给他加了代码排除,客户是上帝嘛,虽然我觉得没必要。
总结
新手用插件(Yoast一步到位),折腾党用代码(自定义灵活),生成后提交到百度/Google站长平台,齐活!别纠结“用插件影响速度”,现在服务器配置都够,插件那点开销忽略不计;也别纠结“代码写得好不好”,能生成XML就行,爬虫没那么挑。
总之啊,网站地图这东西,有就行,别追求完美,我现在维护的站,有的用插件有的用代码,看心情(不是),看需求来。行了,去试试吧,搞不定评论区问,我看到会回(不保证及时,毕竟程序员也要摸鱼)。
Tags:
文章版权声明:除非注明,否则均为WP集市原创文章,转载或复制请以超链接形式并注明出处。

相关文章
- WordPress评论框美化教程:手把手教你打造高颜值互动区
- WordPress社交媒体集成:从0到1搞掂,代码+插件双管齐下
- WordPress邮件通知搞不定?保姆级教程来了,看完就能用!
- WordForms插件真香!3分钟教你从0到1搞定表单,程序员看了都点头
- WordPress登录页太丑?3步自定义,让用户第一眼就记住你!
- WordPress页面构建器咋选?老司机实测Elementor/古腾堡/ Beaver,代码都给你扒开看
- 买WordPress主题别当冤大头!程序员掏心窝子避坑教程
- WordPress插件装不上?老司机手把手带你避坑
- WordPress流量统计设置?So Easy!看这篇就够了!
- WordPress自定义分类法?别懵!手把手教你搞明白
热门文章
