Přeskočit na obsah

Tento článek je z roku 2019. Některé informace už nemusí platit.

Pokud používáte pro správu rezervací stolů v restauraci free plugin Restaurant Reservations a potřebujete ho zabezpečit pomocí reCaptchy od Google? Ačkoliv to plugin neumožňuje, implementace není složitá a provedete ji ve dvou krocích.

1. Nainstalujte a nastavte plugin Invisible reCaptcha for WordPress, který za nás obstará tu nejsložitější část. Kromě několika defaultních integrací umožňuje přidat i vlastní formulář, a to je to, co budeme dělat v dalším kroku.

2. Následující kód vložte do souboru functions.php své odvozené (child) šablony nebo použijte plugin, který vám umožní vkládat výstřižky kódu jako je např. Code snippets. Prosím, nevkládajte vlastní kód přímo do kódu originální šablony – o provedené úpravy vás připraví následující aktualizace šablony.

<?php // don't copy this line
/**
 * @snippet      Add reCaptcha to Restaurant Reservations plugin
 * @sourceCS     https://kybernaut.cz/?p=2992
 * @sourceEN     https://kybernaut.cz/?p=2998
 * @author       Karolína Vyskočilová (https://kybernaut.cz)
 * @testedwith   WordPress 5.2
 * @requires     https://wordpress.org/plugins/invisible-recaptcha/
 */
// -------------------

// Check if both required plugins are activated.
if ( in_array('restaurant-reservations/restaurant-reservations.php', apply_filters('active_plugins', get_option('active_plugins'))) && in_array('invisible-recaptcha/invisible-recaptcha.php', apply_filters('active_plugins', get_option('active_plugins'))) ){

    add_action( 'rtb_booking_form_after_fields', 'kbnt_google_invre_render_widget_action' );
    add_action( 'rtb_validate_booking_submission', 'kbnt_rtb_validate_booking_submission' );
        
}

// Include reCaptcha field.
function kbnt_google_invre_render_widget_action() {
    do_action('google_invre_render_widget_action');
}

// Valide reCaptcha field.
function kbnt_rtb_validate_booking_submission( $booking ) {

    $is_valid = apply_filters('google_invre_is_valid_request_filter', true);
    if ( ! $is_valid ) {
        
        $booking->validation_errors[] = array(
            'field'     => 'name',
            'error_msg' => 'Robot Allert',
            'message'   => __( 'You shall not pass, robot.' ),
        );
    }

}

A je hotovo. Dejte mi vědět v komentářích, pokud něco nefunguje.