Docs/Hooks & Filtres

Hooks & Filtres

Cette référence est destinée aux développeurs qui souhaitent étendre ReadNinja de manière programmatique. Tous les hooks et filtres sont stables et disponibles dans les versions Gratuite et Pro.

Filtres PHP

FiltreParamètresDescription
rpb_is_proboolRetourne true si la licence Pro est active
rpb_should_displaybool $display, int $post_idContrôle programmatiquement si la barre est rendue
rpb_bar_configarray $configModifie le tableau de config JS avant qu'il soit sorti sur la page
rpb_settings_tabsarray $tabsAjoute ou supprime des onglets sur la page de réglages

rpb_is_pro

Permet à d'autres plugins de vérifier si Pro est actif sans coder en dur des noms de classe ou des constantes.

add_action( 'init', function () {
    if ( apply_filters( 'rpb_is_pro', false ) ) {
        // Logique Pro uniquement ici
    }
} );

rpb_should_display

S'exécute juste avant que ReadNinja décide de rendre ou non la barre sur la requête en cours. Retournez false pour la masquer, true pour la forcer. Utilisez-le pour masquer la barre sur les articles très courts :

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

Vous donne le tableau de config JS complet juste avant qu'il soit transmis au front-end. Utilisez-le pour injecter des valeurs personnalisées, remplacer des couleurs basées sur des meta d'article, ou ajouter des données supplémentaires pour vos propres scripts.

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

rpb_settings_tabs

Ajoute un onglet personnalisé à la page de réglages. Combinez avec l'action rpb_render_tab_{tab} pour en remplir le contenu.

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

Actions PHP

ActionParamètresDescription
rpb_after_bar_renderint $post_idSe déclenche après la sortie du HTML de la barre
rpb_render_tab_{tab}Injecte du contenu dans n'importe quel onglet de réglages

Exemple — ajouter un <div> supplémentaire juste après la barre de progression sur les articles individuels :

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

Exemple — remplir le contenu de l'onglet personnalisé enregistré ci-dessus :

add_action( 'rpb_render_tab_custom', function () {
    echo '<h2>Mon onglet personnalisé</h2>';
    echo '<p>N\'importe quel contenu de réglages va ici.</p>';
} );

Événements navigateur

ReadNinja envoie un seul événement DOM que vous pouvez écouter côté front-end.

ÉvénementCibleDétail
rpb:threshold-reacheddocument{ percent: number }

Cet événement se déclenche une seule fois par chargement de page, exactement quand le lecteur franchit le seuil configuré (fonctionnalité Pro — voir Déclencheur de seuil).

document.addEventListener('rpb:threshold-reached', (e) => {
  console.log('Le lecteur a atteint', e.detail.percent, '%')
  // afficher une popup, envoyer un événement analytics, etc.
})