Články

Jak přidat reCaptchu do pluginu Restaurant Reservations

Snippet na přidání reCaptchy do rezervačního formuláře pluginu Restaurant Reservations.

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.