개발자를 위한 훅과 필터

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입니다. 최소 한 번의 메이저 버전 공지와 이전 메이저 버전에 대한 사용 중단 경고 없이는 제거하거나 이름을 변경하지 않습니다.

관련 페이지