开发者钩子与过滤器

5 min read

使用标准 WordPress 钩子扩展或自定义 TTSWP。将以下代码添加到主题的 functions.php 或自定义插件中。所有钩子均稳定且有文档说明。

过滤器钩子

在合成前修改文本

使用此钩子清理内容、注入自定义标记,或在生成音频前移除特定段落。

add_filter( 'mementor_tts_pre_synthesize_text', function( $text, $post_id ) {
    // 你的修改
    $text = str_replace( 'WP', 'WordPress', $text );
    return $text;
}, 10, 2 );

跳过特定文章的音频生成

返回 true 可跳过该文章的自动生成。

add_filter( 'mementor_tts_skip_auto_generation', function( $skip, $post_id ) {
    // 跳过属于 "archive" 分类的文章
    if ( has_category( 'archive', $post_id ) ) {
        return true;
    }
    return $skip;
}, 10, 2 );

更改缓存键

覆盖 TTSWP 生成音频缓存键的方式。适用于需要按用户或自定义上下文进行差异化缓存的场景。

add_filter( 'mementor_tts_audio_cache_key', function( $key, $text, $voice ) {
    return $key . '_' . get_current_user_id();
}, 10, 3 );

自定义默认语音

为特定文章更改所使用的语音。

add_filter( 'mementor_tts_voice_for_post', function( $voice_id, $post_id ) {
    if ( get_post_type( $post_id ) === 'podcast' ) {
        return 'my-podcast-voice-id';
    }
    return $voice_id;
}, 10, 2 );

渲染列标记

供多语言集成使用,用于在文章列表中渲染自定义列内容。

add_filter( 'mementor_tts_render_column', function( $rendered, $post_id, $audio_exists, $audio_url, $processing, $post_status ) {
    // 渲染完自定义标记后返回 true,以跳过默认渲染
    return $rendered;
}, 10, 6 );

动作钩子

音频生成前

add_action( 'mementor_tts_before_generate', function( $post_id, $text, $voice ) {
    // 记录日志、发送通知或做预处理
}, 10, 3 );

音频生成后

add_action( 'mementor_tts_audio_generated', function( $post_id, $audio_url, $characters ) {
    // 发送通知、更新自定义字段、推送到外部队列
}, 10, 3 );

音频删除后

add_action( 'mementor_tts_audio_deleted', function( $post_id ) {
    // 清理相关数据
} );

站点连接时

add_action( 'mementor_tts_site_connected', function( $site_token ) {
    // 通知团队、发送欢迎邮件等
} );

可定义的常量

wp-config.php 中定义:

启用调试日志

define( 'MEMENTOR_TTS_DEBUG', true );

设置后,详细日志将写入 wp-content/debug.log

覆盖 API 端点

适用于预发布或测试环境:

define( 'MEMENTOR_TTS_API_URL', 'https://staging.ttswp.com' );

常见自定义示例

在区块编辑器侧栏添加每篇文章的语音选择器

插件已在编辑器中添加了 TTS 面板。你可以对其进行扩展:

add_filter( 'mementor_tts_editor_sidebar_fields', function( $fields ) {
    $fields[] = [
        'key' => 'speaking_speed',
        'label' => '语速',
        'type' => 'number',
    ];
    return $fields;
} );

将每次生成结果发送到 Slack

add_action( 'mementor_tts_audio_generated', function( $post_id, $audio_url, $characters ) {
    wp_remote_post( 'https://hooks.slack.com/your-webhook', [
        'body' => json_encode( [
            'text' => sprintf( '已为文章 %s 生成 %d 个字符: %s', get_the_title( $post_id ), $characters, $audio_url ),
        ] ),
    ] );
}, 10, 3 );

稳定性承诺

本页列出的钩子均为稳定的公共 API。在至少发出一个主要版本变更通知并在前一个主要版本中添加弃用警告之前,我们不会移除或重命名它们。

相关页面