Docs/Hooks & Filter

Hooks & Filter

Diese Referenz richtet sich an Entwickler, die ReadNinja programmatisch erweitern möchten. Alle Hooks und Filter sind stabil und in der Free- und Pro-Version verfügbar.

PHP-Filter

FilterParameterBeschreibung
rpb_is_proboolGibt true zurück, wenn die Pro-Lizenz aktiv ist
rpb_should_displaybool $display, int $post_idSteuert programmatisch, ob die Leiste gerendert wird
rpb_bar_configarray $configÄndert das JS-Konfigurations-Array, bevor es auf der Seite ausgegeben wird
rpb_settings_tabsarray $tabsFügt Tabs auf der Einstellungsseite hinzu oder entfernt sie

rpb_is_pro

Ermöglicht anderen Plugins zu prüfen, ob Pro aktiv ist, ohne Klassennamen oder Konstanten fest zu kodieren.

add_action( 'init', function () {
    if ( apply_filters( 'rpb_is_pro', false ) ) {
        // Nur Pro-Logik hier
    }
} );

rpb_should_display

Wird ausgeführt, kurz bevor ReadNinja entscheidet, ob die Leiste bei der aktuellen Anfrage gerendert wird. Geben Sie false zurück, um sie auszublenden, true, um sie zu erzwingen. Verwenden Sie es, um die Leiste auf sehr kurzen Artikeln auszublenden:

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

Gibt Ihnen das vollständige JS-Konfigurations-Array, kurz bevor es an das Frontend übertragen wird. Verwenden Sie es, um benutzerdefinierte Werte einzufügen, Farben basierend auf Artikel-Meta zu ersetzen oder zusätzliche Daten für Ihre eigenen Scripts hinzuzufügen.

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

rpb_settings_tabs

Fügt einen benutzerdefinierten Tab zur Einstellungsseite hinzu. Kombinieren Sie es mit der Aktion rpb_render_tab_{tab}, um es mit Inhalt zu füllen.

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

PHP-Aktionen

AktionParameterBeschreibung
rpb_after_bar_renderint $post_idWird nach der Ausgabe des Leisten-HTMLs ausgelöst
rpb_render_tab_{tab}Injiziert Inhalt in einen beliebigen Einstellungs-Tab

Beispiel — ein zusätzliches <div> direkt nach der Fortschrittsleiste auf einzelnen Artikeln hinzufügen:

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

Beispiel — den Inhalt des oben registrierten benutzerdefinierten Tabs ausfüllen:

add_action( 'rpb_render_tab_custom', function () {
    echo '<h2>Mein benutzerdefinierter Tab</h2>';
    echo '<p>Beliebiger Einstellungsinhalt geht hier hin.</p>';
} );

Browser-Events

ReadNinja sendet ein einzelnes DOM-Event, das Sie auf der Frontend-Seite abhören können.

EventZielDetail
rpb:threshold-reacheddocument{ percent: number }

Dieses Event wird einmal pro Seitenaufruf ausgelöst, genau wenn der Leser den konfigurierten Schwellenwert überschreitet (Pro-Funktion — siehe Schwellenwert-Auslöser).

document.addEventListener('rpb:threshold-reached', (e) => {
  console.log('Leser hat', e.detail.percent, '% erreicht')
  // Popup anzeigen, Analytics-Event senden, usw.
})