Хуки и фильтры для разработчиков

5 min read

Расширяйте и настраивайте TTSWP с помощью стандартных хуков WordPress. Добавляйте их в файл 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( 'Сгенерировано %d символов для записи %s: %s', $characters, get_the_title( $post_id ), $audio_url ),
        ] ),
    ] );
}, 10, 3 );

Гарантия стабильности

Хуки, перечисленные на этой странице, являются стабильным публичным API. Мы не удаляем и не переименовываем их без уведомления минимум в одной мажорной версии в журнале изменений и предупреждения об устаревании для предыдущей мажорной версии.

Связанные страницы