旅行日志自定义模块是一个 WordPress 插件,用于创建和管理两种自定义内容类型:
- 游记(Travel):适合发布旅行见闻、游记攻略等内容
- 揽件日志(Journal插件提供了完整的列表页和内容页模板,开箱即用,同时也支持主题模板覆盖。
- ✅ 自定义文章类型(游记、揽件日志)
- ✅ 自定义分类法(系列、标签)
- ✅ 内置精美模板(列表页+内容页)
- ✅ 特色图片支持
- ✅ 后台自定义列显示
- ✅ 主题模板覆盖支持
- ✅ Gutenberg 编辑器支持
- ✅ REST API 支持
视频源:https://videos.pexels.com/video-files/18023827/180...
方法一:通过 WordPress 后台安装
1. 下载插件 ZIP 文件
2. 进入 WordPress 后台 → 插件 → 安装插件
3. 点击"上传插件",选择 ZIP 文件
4. 点击"立即安装"
5. 安装完成后点击"激活"
视频源:https://videos.pexels.com/video-files/29327048/126...
方法二:通过 FTP 安装
1. 解压插件文件夹
2. 上传到 /wp-content/plugins/ 目录
3. 进入 WordPress 后台 → 插件
4. 找到"旅行日志自定义模块"并点击"激活"
/wp-content/plugins/你的插件文件夹/
├── 插件主文件.php
└── templates/
├── archive-travel.php 游记列表页模板
├── single-travel.php 游记详情页模板
├── archive-journal.php 日志列表页模板
└── single-journal.php 日志详情页模板
功能概述
1. 游记(Travel)
- URL 结构:https://你的域名/travels/(列表页)
- 单页 URL:https://你的域名/travels/文章别名/
- 支持功能:标题、编辑器、特色图片、摘要、评论、自定义字段
- 分类法:系列(层级分类)
2. 揽件日志(Journal)
- URL 结构:https://你的域名/journals/(列表页)
- 单页 URL:https://你的域名/journals/文章别名/
- 支持功能:标题、编辑器、特色图片、摘要、评论、自定义字段
- 分类法:标签(非层级分类)
---
第一步:发布第一篇游记
1. 进入 WordPress 后台
2. 左侧菜单找到"游记" → "写新游记"
3. 输入标题和内容
4. 设置特色图片(可选)
5. 添加系列分类(可选)
6. 点击"发布"
第二步:查看效果
- 访问 https://你的域名/travels/ 查看游记列表
- 点击任意文章标题查看详情页
1. 左侧菜单找到"揽件日志" → "写新日志"
2. 输入标题和内容
3. 添加标签(可选)
4. 点击"发布"
---
一、管理文章
1. 添加系列(游记专用)
方法一:在文章编辑页面添加
- 编辑游记文章
- 右侧找到"系列"模块
- 输入新系列名称或选择已有系列
- 点击"添加"
方法二:在系列管理页面添加
- 后台菜单 → 游记 → 系列
- 输入系列名称和别名
- 可选择父级系列(支持层级)
- 点击"添加新系列"
2. 管理标签(日志专用)
- 后台菜单 → 揽件日志 → 标签
- 可以添加、编辑、删除标签
- 标签支持分组显示
3. 快速编辑
在文章列表页面:
- 鼠标悬停在文章标题上
- 点击"快速编辑"
- 可以快速修改标题、系列/标签等信息
4. 批量操作
- 勾选多篇文章
- 选择"批量操作"
- 可以批量移动分类、删除等
游记和日志列表页都增加了两个自定义列:
列名 说明
------ ------
封面图 显示文章的特色图片缩略图
系列/标签 显示文章所属的系列或标签
三、URL 结构说明
固定链接模式(推荐)
在 设置 → 固定链接 中选择"文章名"模式:
游记列表页: https://你的域名/travels/
游记详情页: https://你的域名/travels/文章别名/
系列归档: https://你的域名/travel-series/系列别名/
日志列表页: https://你的域名/journals/
日志详情页: https://你的域名/journals/文章别名/
标签归档: https://你的域名/journal-tag/标签别名/
朴素链接模式
如果不开启固定链接:
游记列表页: https://你的域名/?posttype=travel
游记详情页: https://你的域名/?p=文章ID
系列归档: https://你的域名/?taxonomy=travelseries&term=系列别名
四、模板系统
模板加载优先级
插件会按以下顺序查找模板:
1. 主题目录中的模板(优先级最高)
2. 插件内置模板(优先级次之)
3. WordPress 默认模板(最后)
主题模板覆盖
如果你想自定义模板样式,可以在主题中创建以下文件:
你的主题文件夹/
├── archive-travel.php 覆盖游记列表页
├── single-travel.php 覆盖游记详情页
├── archive-journal.php 覆盖日志列表页
└── single-journal.php 覆盖日志详情页
内置模板样式说明
游记列表页(archive-travel.php)
- 网格布局(响应式)
- 卡片式设计
- 显示特色图片、标题、日期、作者、摘要、系列
- 鼠标悬停有动画效果
游记详情页(single-travel.php)
- 单栏布局
- 大标题样式
- 特色图片全宽显示
- 支持评论
- 上一篇/下一篇导航
日志列表页(archive-journal.php)
- 列表布局
- 简洁卡片设计
- 显示标题、日期、作者、摘要、标签
日志详情页(single-journal.php)
- 简洁阅读布局
- 支持评论
- 标签显示
- 上一篇/下一篇导航
自定义CSS
你可以通过主题的 style.css 覆盖默认样式:
/ 修改游记列表页容器宽度 /
.travel-archive-container {
max-width: 1400px;
}
/ 修改卡片样式 /
.travel-card {
background: f9f9f9;
border-radius: 8px;
}
/ 修改标题颜色 /
.article-title {
color: 333;
}
添加自定义字段
在模板中添加自定义字段:
<?php
// 获取自定义字段
$location = getpostmeta(gettheID(), 'travellocation', true);
$duration = getpostmeta(gettheID(), 'travelduration', true);
?>
<div class="travel-info">
<p>地点:<?php echo eschtml($location); ?></p>
<p>时长:<?php echo eschtml($duration); ?>天</p>
</div>
---
1. 访问 travels 或 journals 页面出现 404 错误?
解决方法:
- 进入 WordPress 后台 → 设置 → 固定链接
- 不做任何修改,直接点击"保存更改"
- 这将刷新重写规则
2. 模板不显示怎么办?
可能原因及解决方法:
1. 插件未激活 → 检查插件是否已激活
2. 权限问题 → 确保 templates 文件夹有读取权限
3. 主题冲突 → 暂时切换到默认主题测试
3. 如何修改系列/标签的 URL?
修改 registertaxonomies() 方法中的 rewrite 参数:
'rewrite' => array('slug' => 'your-custom-slug')
修改后需要重新保存固定链接。
4. 如何禁用某个文章类型?
在 registerposttypes() 方法中注释掉对应的注册代码即可。
5. 如何修改每页显示的文章数量?
在主题的 functions.php 中添加:
function customtravelpostsperpage($query) {
if (!isadmin() && $query->isposttypearchive('travel')) {
$query->set('postsperpage', 12);
}
if (!isadmin() && $query->isposttypearchive('journal')) {
$query->set('postsperpage', 20);
}
}
addaction('pregetposts', 'customtravelpostsperpage');
6. 支持古腾堡编辑器吗?
支持。插件已启用 showinrest => true,完全兼容古腾堡编辑器。
7. 如何添加自定义字段到 REST API?
function registertravelmeta() {
registermeta('post', 'travellocation', array(
'showinrest' => true,
'single' => true,
'type' => 'string',
));
}
addaction('init', 'registertravelmeta');
8. 如何添加新的文章类型?
复制 registerposttypes() 方法中的代码,修改参数即可。
---
更新日志
Version 1.1 (2024-01-XX)
- 优化模板加载逻辑
- 修复 flushrewriterules 性能问题
- 添加模板文件存在检查
- 优化分类链接显示
Version 1.0 (初始版本)
- 初始发布
- 支持游记和日志两种文章类型
- 内置精美模板
- 支持系列和标签分类
- 后台自定义列显示
---
技术支持
如有问题或建议,请通过以下方式联系:
- 在 WordPress 支持论坛发帖
- 查看插件目录下的 README 文件
- 检查 WordPress 调试日志
数据库表结构
插件使用 WordPress 默认的数据表:
- wpposts - 存储文章数据
- wppostmeta - 存储自定义字段
- wptermrelationships - 存储分类关系
- wptermtaxonomy - 存储分类法
- wpterms - 存储术语
钩子参考
文章类型钩子
- registerposttypeargs - 修改文章类型参数
- travelseriesargs - 修改系列分类参数
模板钩子
- singletemplate - 修改单页模板
- archivetemplate - 修改归档模板
查询钩子
- pregetposts - 修改文章查询
函数参考
// 获取游记列表
$travels = getposts(array(
'posttype' => 'travel',
'postsperpage' => 10,
));
// 获取系列列表
$series = getterms(array(
'taxonomy' => 'travelseries',
'hideempty' => false,
));
// 获取日志标签
$tags = getterms(array(
'taxonomy' => 'journaltag',
'hide_empty' => false,
));
文档结束