简易网站地图(WordPress 插件)

一款适用于 WordPress 的现代化、高性能 HTML 网站地图生成器。

Easy Sitemap 允许您使用强大的短代码系统,为页面、文章和自定义文章类型(CPTs)显示完全可自定义的网站地图。它采用现代化的 OOP 架构构建,具备智能缓存、PSR-4 自动加载功能,并为开发者提供了丰富的钩子。

Easy Sitemap (WordPress Plugin)

✨ 主要特性

面向网站建设者

  • 通用自定义文章类型支持: 自动检测并支持所有公开文章类型(包括 WooCommerce 产品、作品集等)。
  • 可视化短代码生成器: 管理面板内置交互式构建器,无需记忆属性即可生成代码。
  • 层级布局: 显示页面的父子关系以及文章的类别分组。
  • 响应式网格: 通过 CSS 网格支持多列布局(最多 6 列)。
  • 安全自定义样式: 直接在插件设置中添加自定义 CSS,无需修改主题。

⚡ 性能与技术

  • 智能缓存: 利用WordPress瞬态缓存为访客缓存输出,同时为登录用户保持内容动态更新。
  • 优化查询: 使用no_found_rows和高效的数据库调用来最小化开销。
  • 现代架构: 采用清晰的面向对象设计,并支持PSR-4自动加载。
  • SEO友好: 生成语义化的结构化HTML标记。

要求

  • WordPress: 5.0或更高版本
  • PHP: 7.2或更高版本
  • MySQL: 5.6或更高版本

安装

  1. 下载: 提取插件文件。
  2. 上传:easy-sitemap 文件夹移动到您服务器的 /wp-content/plugins/ 目录。
  3. 激活: 转到 WordPress 管理后台 → 插件 并激活 Easy Sitemap
  4. 配置: 前往 设置 → Easy Sitemap 以调整全局设置或使用短代码生成器。

短代码用法

要显示网站地图,请将短代码
[easy_sitemap]
插入到任何文章、页面或小工具中。

短代码生成器

推荐: 无需手动输入属性,请前往 设置 → Easy Sitemap。内置的生成器允许您通过用户界面切换选项,并自动将生成的短代码复制到您的剪贴板。

手动属性参考

您可以使用以下属性自定义输出:

1. 内容与过滤

属性 类型 默认值 描述
post_type string post 要显示的文章类型(例如:pageproductportfolio)。
limit int 1000 要显示的最大项目数量。
include string null 包含的ID的逗号分隔列表(例如:10,15,22)。
exclude string null 排除的ID的逗号分隔列表。
category string null 按分类别名筛选(例如:news,updates)。
tag string null 按标签别名筛选。
author int null 按作者ID筛选。
date_from string null 开始日期(格式:YYYY-MM-DD)。
date_to string null 结束日期(格式:YYYY-MM-DD)。

2. 高级分类法筛选

要按自定义分类法(例如,WooCommerce 产品分类)进行筛选:

  • taxonomy:分类法别名(例如 product_cat)。
  • term:特定术语别名(例如 accessories)。
  • 注意:这两个属性必须同时使用。

3. 排序

属性 选项 默认值
orderby date, title, modified, menu_order, rand, ID date
order DESC (降序), ASC (升序) DESC

4. 显示与布局

属性 类型 默认值 描述
show_dates 布尔型 0 在标题旁显示发布日期。
show_excerpts 布尔型 0 显示文章摘要。
show_images 布尔型 0 显示特色图像(缩略图)。
hierarchical 布尔型 0 显示父/子结构(页面)或分类分组(文章)。
columns 整型 1 将列表分栏显示(最大:6)。
class 字符串 向包装器添加自定义 CSS 类。

5. 缓存(按实例)

属性 描述
cache 设置为 0 可为特定短代码禁用缓存(覆盖全局设置)。
cache_expiry 持续时间,单位为秒(默认值:3600)。

示例

标准博客列表

[easy_sitemap post_type="post" show_dates="1" category="news"]

WooCommerce 产品网格
在3列网格中显示12个带图片的电子产品。

[easy_sitemap post_type="product" taxonomy="product_cat" term="electronics" show_images="1" columns="3" limit="12"]

分层页面
非常适合用于目录或网站索引。

[easy_sitemap post_type="page" hierarchical="1" orderby="menu_order" order="ASC"]

按日期范围筛选作品集

[easy_sitemap post_type="portfolio" date_from="2023-01-01" date_to="2023-12-31"]

⚙️ 配置与性能

智能缓存

该插件采用智能缓存系统,确保即使生成大型站点地图,您的网站依然能保持快速响应。

  • 全局设置:可在设置 → Easy Sitemap中配置缓存。
  • 仅访客模式:缓存仅应用于未登录用户(访客)。已登录的管理员始终查看实时数据。
  • 瞬态缓存:使用原生的WordPress瞬态缓存。
  • 自动清除:插件停用时缓存将自动清除。

自定义样式

您可以通过插件设置中的自定义CSS框来设置站点地图的样式。

常用选择器:

/* 容器 */
.easy-sitemap { margin-bottom: 30px; }

/* 列表项 */
.easy-sitemap-item { border-bottom: 1px solid #eee; }

/* 图片 */
.easy-sitemap-image { border-radius: 4px; max-width: 80px; }

/* 日期 */
.easy-sitemap-date { font-size: 0.85em; color: #888; }

‍ 开发者文档

架构

该插件遵循严格的 PSR-4 标准,并将 Admin、Frontend 和 Core 逻辑按关注点分离。

classes/
├── EasySitemap/
│   ├── Admin/          # 设置与用户界面
│   ├── Frontend/       # 短代码引擎与资源文件
│   ├── Autoloader.php
│   └── Plugin.php      # 引导程序

钩子与过滤器

使用以下过滤器以编程方式修改行为:

1. 修改查询参数
在获取站点地图之前,调整
WP_Query
参数。

add_filter( 'easy_sitemap_query_args', function( $query_args, $atts ) {
    // 示例:强制所有站点地图排除特定分类ID
    $query_args['category__not_in'] = [ 99 ];
    return $query_args;
}, 10, 2 );

2. 修改输出 HTML
在最终渲染前过滤输出的 HTML。

add_filter( 'easy_sitemap_output', function( $output, $atts, $posts ) {
    return '<div class="my-wrapper">' . $output . '</div>';
}, 10, 3 );

3. 更改图片尺寸
更改源图片尺寸(默认为 ‘thumbnail’)。

add_filter( 'easy_sitemap_image_size', function( $size ) {
    return 'medium'; 
} );

4. 添加支持的帖子类型
如果自动检测失败,手动注入对复杂 CPT(自定义帖子类型)的支持。

add_filter( 'easy_sitemap_supported_post_types', function( $post_types ) {
    $post_types['my_custom_type'] = 'My Custom Type';
    return $post_types;
} );

故障排除

  • 图片不显示? 请确保存在 show_images="1" 属性,并且您的主题支持文章缩略图。
  • 更改未生效? 如果启用了缓存,请等待过期时间(默认为1小时)或保存插件设置页面以手动刷新缓存。
  • 短代码生成器问题? 请确保您的浏览器允许剪贴板访问。如果”复制”按钮失效,请从生成器框中手动复制文本。

许可证与鸣谢

许可证: GNU通用公共许可证 v2.0 或更高版本。

怀着 ❤️ 为 WordPress 社区打造。