Hooks & Filter

Actions und Filters fuer Entwickler, die das Plugin erweitern moechten.

Recruiting Playbook bietet eine Reihe von WordPress-Actions und Filters, mit denen Entwickler das Verhalten des Plugins anpassen und erweitern koennen.

Actions

rp_application_received

Wird ausgeloest, nachdem eine neue Bewerbung erfolgreich eingegangen ist.

add_action( 'rp_application_received', function( $application ) {
    // Beispiel: Externe API benachrichtigen
    wp_remote_post( 'https://api.example.com/notify', [
        'body' => json_encode( [
            'event' => 'new_application',
            'job_id' => $application->job_id,
        ] ),
    ] );
}, 10, 1 );

Parameter:

  • $application (Application) - Das Application-Model-Objekt

rp_application_status_changed

Wird nach jeder Status-Aenderung einer Bewerbung ausgeloest.

add_action( 'rp_application_status_changed', function( $application, $old_status, $new_status ) {
    if ( $new_status === 'interview' ) {
        // Beispiel: Interview-Termin in externen Kalender eintragen
    }
}, 10, 3 );

Parameter:

  • $application (Application) - Das aktualisierte Application-Objekt
  • $old_status (string) - Vorheriger Status
  • $new_status (string) - Neuer Status

rp_application_hired

Wird ausgeloest, wenn ein Bewerber eingestellt wird (Status wechselt zu hired).

add_action( 'rp_application_hired', function( $application ) {
    // Beispiel: Bewerber in HR-System anlegen
}, 10, 1 );

rp_application_created

Wird direkt nach dem Erstellen einer Bewerbung in der Datenbank ausgeloest.

add_action( 'rp_application_created', function( $application_id, $data ) {
    // Beispiel: Logging
    error_log( "Neue Bewerbung #{$application_id} fuer Stelle #{$data['job_id']}" );
}, 10, 2 );

rp_before_candidate_delete / rp_after_candidate_delete

Werden vor und nach einer DSGVO-Loeschung ausgeloest.

add_action( 'rp_before_candidate_delete', function( $candidate_id ) {
    // Beispiel: Daten in externem System loeschen
}, 10, 1 );

add_action( 'rp_after_candidate_delete', function( $candidate_id ) {
    // Beispiel: Bestaetigung senden
}, 10, 1 );

rp_spam_blocked

Wird ausgeloest, wenn eine Bewerbung als Spam erkannt und blockiert wird.

add_action( 'rp_spam_blocked', function( $type, $ip, $request ) {
    // Beispiel: IP-Adresse loggen
    error_log( "Spam blockiert: Typ={$type}, IP={$ip}" );
}, 10, 3 );

Parameter:

  • $type (string) - Art des Spam-Schutzes (z.B. honeypot, rate_limit)
  • $ip (string) - IP-Adresse
  • $request (array) - Request-Daten

Filters

rp_application_form_fields

Felder des Bewerbungsformulars anpassen, hinzufuegen oder entfernen.

add_filter( 'rp_application_form_fields', function( $fields, $job_id ) {
    // Beispiel: Zusaetzliches Feld hinzufuegen
    $fields['earliest_start'] = [
        'type'     => 'date',
        'label'    => 'Fruehester Starttermin',
        'required' => false,
    ];

    return $fields;
}, 10, 2 );

Parameter:

  • $fields (array) - Formularfelder-Array
  • $job_id (int) - ID der aktuellen Stelle

rp_notification_recipients

E-Mail-Empfaenger fuer Bewerbungsbenachrichtigungen aendern.

add_filter( 'rp_notification_recipients', function( $recipients, $application ) {
    // Beispiel: Abteilungsleiter hinzufuegen
    $recipients[] = '[email protected]';
    return $recipients;
}, 10, 2 );

rp_allowed_file_types

Erlaubte Dateitypen fuer den Upload anpassen.

add_filter( 'rp_allowed_file_types', function( $types ) {
    // Standard: ['pdf', 'doc', 'docx']
    $types[] = 'jpg';
    $types[] = 'png';
    return $types;
} );

rp_max_file_size

Maximale Dateigroesse fuer Uploads aendern (in Bytes).

add_filter( 'rp_max_file_size', function( $size ) {
    return 20 * 1024 * 1024; // 20 MB
} );

Hinweis

Der Standardwert betraegt 10 MB. Beachten Sie auch die PHP-Limits upload_max_filesize und post_max_size in Ihrer Server-Konfiguration.

rp_job_query_args

Die WP_Query-Argumente fuer Stellenanzeigen anpassen.

add_filter( 'rp_job_query_args', function( $query_args ) {
    // Beispiel: Nur aktive Stellen der letzten 30 Tage
    $query_args['date_query'] = [
        [ 'after' => '30 days ago' ],
    ];
    return $query_args;
} );

rp_api_application_response

API-Antwort fuer Bewerbungen anpassen (REST API).

add_filter( 'rp_api_application_response', function( $response, $application ) {
    // Beispiel: Zusaetzliches Feld in API-Antwort
    $response['department'] = get_post_meta(
        $application->job_id, '_department', true
    );
    return $response;
}, 10, 2 );

Status-Workflow

Zum Verstaendnis der Actions: Bewerbungen durchlaufen folgenden Status-Workflow:

Neu -> In Pruefung -> Interview -> Angebot -> Eingestellt
  \         \            \           \
   +---------+-----------+-----------+---> Abgelehnt
                                          Zurueckgezogen
StatusSchluesselErlaubte Uebergaenge
Neunewscreening, rejected, withdrawn
In Pruefungscreeninginterview, rejected, withdrawn
Interviewinterviewoffer, rejected, withdrawn
Angebotofferhired, rejected, withdrawn
Eingestellthired-
Abgelehntrejected-
Zurueckgezogenwithdrawn-