Docs/Hooks & Filtros

Hooks & Filtros

Esta referência é destinada a desenvolvedores que desejam estender o ReadNinja de forma programática. Todos os hooks e filtros são estáveis e disponíveis nas versões Gratuita e Pro.

Filtros PHP

FiltroParâmetrosDescrição
rpb_is_proboolRetorna true se a licença Pro estiver ativa
rpb_should_displaybool $display, int $post_idControla programaticamente se a barra é renderizada
rpb_bar_configarray $configModifica o array de configuração JS antes de ser enviado para a página
rpb_settings_tabsarray $tabsAdiciona ou remove abas na página de configurações

rpb_is_pro

Permite que outros plugins verifiquem se o Pro está ativo sem codificar nomes de classes ou constantes.

add_action( 'init', function () {
    if ( apply_filters( 'rpb_is_pro', false ) ) {
        // Lógica exclusiva do Pro aqui
    }
} );

rpb_should_display

Executa logo antes de o ReadNinja decidir renderizar ou não a barra na requisição atual. Retorne false para ocultá-la, true para forçá-la. Use-o para ocultar a barra em artigos muito curtos:

add_filter( 'rpb_should_display', function ( $display, $post_id ) {
    $content    = get_post_field( 'post_content', $post_id );
    $word_count = str_word_count( wp_strip_all_tags( $content ) );

    if ( $word_count < 300 ) {
        return false;
    }
    return $display;
}, 10, 2 );

rpb_bar_config

Fornece o array de configuração JS completo logo antes de ser transmitido para o front-end. Use-o para injetar valores personalizados, substituir cores baseadas em meta do artigo ou adicionar dados extras para seus próprios scripts.

add_filter( 'rpb_bar_config', function ( $config ) {
    if ( is_singular( 'podcast' ) ) {
        $config['color']  = '#ff6b35';
        $config['height'] = 6;
    }
    return $config;
} );

rpb_settings_tabs

Adiciona uma aba personalizada à página de configurações. Combine com a action rpb_render_tab_{tab} para preencher o conteúdo.

add_filter( 'rpb_settings_tabs', function ( $tabs ) {
    $tabs['custom'] = __( 'Personalizado', 'meu-plugin' );
    return $tabs;
} );

Actions PHP

ActionParâmetrosDescrição
rpb_after_bar_renderint $post_idDispara após a saída do HTML da barra
rpb_render_tab_{tab}Injeta conteúdo em qualquer aba de configurações

Exemplo — adicionar uma <div> extra logo após a barra de progresso em artigos individuais:

add_action( 'rpb_after_bar_render', function ( $post_id ) {
    echo '<div class="minha-faixa-personalizada" data-post="' . esc_attr( $post_id ) . '"></div>';
} );

Exemplo — preencher o conteúdo da aba personalizada registrada acima:

add_action( 'rpb_render_tab_custom', function () {
    echo '<h2>Minha aba personalizada</h2>';
    echo '<p>Qualquer conteúdo de configurações vai aqui.</p>';
} );

Eventos do navegador

O ReadNinja envia um único evento DOM que você pode escutar no front-end.

EventoAlvoDetalhe
rpb:threshold-reacheddocument{ percent: number }

Este evento dispara uma única vez por carregamento de página, exatamente quando o leitor ultrapassa o gatilho configurado (funcionalidade Pro — consulte Gatilho de porcentagem).

document.addEventListener('rpb:threshold-reached', (e) => {
  console.log('O leitor atingiu', e.detail.percent, '%')
  // exibir um popup, enviar um evento de analytics, etc.
})