假设我们有一个博客,需要为每篇文章存储一个自定义的阅读时间。那么,我们可以使用 add_post_meta()
来实现这一功能。
示例代码
在主题的 functions.php
文件中添加以下代码:
function add_reading_time_meta($post_id) {
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return;
}
// 检查用户权限
if (!current_user_can('edit_post', $post_id)) {
return;
}
$meta_key = 'reading_time';
// 假设每分钟阅读200个字
$content = get_post_field('post_content', $post_id);
$word_count = str_word_count(strip_tags($content));
$reading_time = ceil($word_count / 200);
// 添加或更新阅读时间元数据
if (!add_post_meta($post_id, $meta_key, $reading_time, true)) {
update_post_meta($post_id, $meta_key, $reading_time);
}
}
add_action('save_post', 'add_reading_time_meta');
代码说明
-
自动保存检查:
– 确保不在自动保存时执行代码。 -
权限检查:
– 确保用户有权限编辑文章。 -
计算阅读时间:
– 获取文章内容。
– 计算字数,假设每分钟阅读 200 个字。
– 计算阅读时间并向上取整。 -
添加或更新元数据:
– 使用add_post_meta()
添加阅读时间。
– 如果已存在,则用update_post_meta()
更新。
使用场景
- 显示阅读时间:
- 在文章模板中显示阅读时间,提升用户体验。
前端显示
在文章模板中,可以使用以下代码显示阅读时间:
$reading_time = get_post_meta(get_the_ID(), 'reading_time', true);
if ($reading_time) {
echo '<p>Estimated reading time: ' . $reading_time . ' min</p>';
}
这样,每次保存文章时,都会自动计算并存储阅读时间,并可以在前端显示。