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
| Filtre | Paramètres | Description |
|---|---|---|
rpb_is_pro | bool | Retourne true si la licence Pro est active |
rpb_should_display | bool $display, int $post_id | Contrôle programmatiquement si la barre est rendue |
rpb_bar_config | array $config | Modifie le tableau de config JS avant qu'il soit sorti sur la page |
rpb_settings_tabs | array $tabs | Ajoute 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
| Action | Paramètres | Description |
|---|---|---|
rpb_after_bar_render | int $post_id | Se 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énement | Cible | Détail |
|---|---|---|
rpb:threshold-reached | document | { 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.
})