假设我们有一个博客,需要为每篇文章存储一个自定义的阅读时间。那么,我们可以使用 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>';
}
这样,每次保存文章时,都会自动计算并存储阅读时间,并可以在前端显示。
Last Updated: 
			