Personnalisation de l'extension
Afin de faciliter la personnalisation du plugin, différents filtres et actions ont été créés. Nous recommandons d'insérer le custom code dans le fichier functions.php de votre thème-enfant afin de garantir que ce code ne soit pas effacé lors de la mise à jour du plugin ou du thème.
Filtres relatifs au post de type d'hébergements
hb_accommodation_cpt
hb_accommodation_public
Filtres relatifs au formulaire de recherche
Filtres relatifs à la sélection du type d'hébergement
hb_available_accommodation_markup
hb_first_available_accom_num
Filtres relatifs à la sélection des services supplémentaires
Filtres relatifs au formulaire de détails client/résa
hb_details_form_markup_before_field
hb_details_form_markup_after_field
Filtres relatifs à l'étape de paiement
Filtres relatifs au résumé de la réservation et à la zone du bouton final "Réservez maintenant"
hb_resa_summary_markup
hb_resa_summary_no_external_payment_markup
hb_resa_summary_external_payment_markup
hb_confirm_area_markup
Filtres relatifs à la facture
hb_invoice_table_markup
Filtres relatifs aux actions associées à la réservation et au client
Filtres relatifs aux shorcodes [hb_accommodation_list], [hb_rates], [hb_availability]
hb_rates_markup
hb_availability_on_click_refresh
Filtres relatifs aux rôles ajoutés par HBook ("Reservation manager", "Reservation reader", "Pricing manager", et "HBook manager")
hb_resa_reader_capabilities
hb_pricing_manager_capabilities
hb_hbook_manager_capabilities
Filters relatis aux emails automatiques
hb_email_actions : permet d'ajouter des actions qui déclenchent l'envoi d'un email (comme par exemple de cliquer sur "Marquer comme payée")
hb_scheduled_min_hour : pour modifier la fenêtre d’envoi des emails automatiques (heure minimum)
hb_scheduled_max_hour : pour modifier la fenêtre d’envoi des emails automatiques (heure maximum)
Filtres relatifs à la synchronisation iCal
hb_ical_agenda_check_in_time : pour modifier l’heure d’arrivée, partagée dans l’export iCal au format “agenda”. Défaut: 15h.
hb_ical_agenda_check_out_time : pour modifier l’heure de départ, partagée dans l’export iCal au format “agenda”. Défaut: 11h.
hb_ical_additional_info : pour ajouter des informations à filtrer lors de l’import iCal. Ces informations filtées seront affichées dans la colonne “Commentaires”.
hb_ical_additional_non_standard_properties: pour ajouter des informations permettant de filtrer tout champ de propriété non standard ("X-PROPERTY-NAME") lors de l'importation d'un événement à partir du calendrier iCal. Les informations filtrées seront affichées dans la colonne "Commentaires" de la réservation.
hb_ical_nb_years_history : pour modifier le nombre d’années rétrospectives à inclure dans l’export iCal lorsque d’un export incluant les réservations passées (paramètre “future_only” à “no”). Défaut: 2 ans.
Divers
hb_strings : permet d'ajouter des chaînes de caractères externes à HBook > Texte.
Fonctions JS
Le plugin HBook appelle aussi les deux fonctions JavaScript suivantes:
hb_accommodation_taxonomies
Ceci est un filtre qui s'applique aux taxonomies Paramètre qui est passé dans la fonction register_post_type utilisée pour créer les posts de Types d'Hébergement.
Paramètre:
$taxonomies: (tableau) liste des taxonomies.
Exemple:
Ajout des catégories pour les postes de Type d'Hébergement.
function categories_for_accommodation( $taxonomies ) {
$taxonomies[] = 'category';
return $taxonomies;
}
add_filter( 'hb_accommodation_taxonomies', 'categories_for_accommodation' );
Merci de noter que par défaut les posts utilisant un "custom post type" ne sont pas inclus dans les pages d'archives. Afin d'ajouter ces posts (si vous souhaitez par exemple avoir une page pour une catégorie), vous devrez ajouter le code suivant:
function hbook_add_custom_types( $query ) {
if( (is_category() || is_tag()) && $query->is_archive() && empty( $query->query_vars['suppress_filters'] ) ) {
$query->set( 'post_type', array(
'post', 'hb_accommodation'
));
}
return $query;
}
add_filter( 'pre_get_posts', 'hbook_add_custom_types' );
hb_accommodation_has_archive
Ce filtre s'applique au paramètre has_archive qui est passé à la fonction register_post_type utilisée pour créer les posts de Types d'Hébergement.
Paramètres: aucun
Exemple:
Pour désactiver l'archive pour les posts de type d'hébergement:
function hb_disable_archive() {
return false;
}
add_filter( 'hb_accommodation_has_archive', 'hb_disable_archive' );
hb_accommodation_supports
Ce filtre s'applique au paramètre supports qui est passé à la fonction register_post_type utilisée pour créer les posts de Types d'Hébergement.
Paramètre:
$supports: (tableau) liste des éléments.
Exemple:
Ajout des "excerpts" pour les posts de type d'hébergement.
function support_for_excerpts( $supports ) {
$supports[] = 'excerpt';
return $supports;
}
add_filter( 'hb_accommodation_supports', 'support_for_excerpts' );
hb_search_form_markup
Ce filtre s'applique au balisage HTML du formulaire de recherche.
Paramètres :
$output: (chaîne de caractères) le code HTML du formulaire.
$form_id: (chaîne de caractères) l'id du formulaire tel que passé au shortcode [hb_booking_form] grâce au paramètre form_id.
hb_search_form_title
Ce filtre s'applique au titre du formulaire de recherche.
Paramètre:
$title: (chaîne de caractères) le code HTML du titre du formulaire.
Exemple:
Changer en h2.
function change_title_tag( $title ) {
return str_replace( 'h3', 'h2', $title );
}
add_filter( 'hb_search_form_title', 'change_title_tag' );
Ce filtre s'applique aux noms de chaque service supplémentaire (les services supplémentaires sont montrés après la selection de l'hébergement).
Paramètres: $display_name, $option, $price
$display_name: (chaîne de caractères) nom de l'extra tel qu'il sera affiché
$extra: (tableau) information concernant l'extra
$price: (tableau) prix de l'extra
hb_extras_form_markup
Ce filtre s'applique au balisage HTML du formulaire qui affiche les services supplémentaires.
Paramètre:
$output: (chaîne de caractères) le code HTML du formulaire.
hb_resa_extra_formatting
Ce filtre est appliqué aux noms de chaque service supplémentaire choisi (dans les emails envoyés par HBook).
Paramètres:
$formatted_extra_name: (chaîne de caractères) le nom formaté du service supplémentaire
$extra_name: (chaîne de caractères) le nom du service supplémentaire
$extra_value: (chaîne de caractères) la valeur de l'option choisie
$option_choice_name: (chaîne de caractères) le nom de l'option choisie
hb_details_form_markup
Ce filtre s'applique au balisage HTML du formulaire de détails client/réservation.
Paramètre:
$output: (chaîne de caractères) le code HTML du formulaire.
hb_payment_types
Ce filtre peut être utilisé pour modifier l'ordre des méthodes de paiement listée, lorsque vous offrez le choix au client (paiement à l'arrivée, d'un acompte ou de la totalité)
Paramètre:
$types: (tableau) liste des méthodes de paiement autorisés. L'ordre par défaut est: array( 'offline', 'store_credit_card', 'deposit', 'full' ).
Exemple:
Modification de l'ordre afin que le paiement hors ligne (à l'arrivée par exemple) soit affiché en dernier.
function custom_payment_type_order( $types ) {
$types = array( 'deposit', 'full', 'store_credit_card', 'offline' );
return $types;
}
add_filter( 'hb_payment_types', 'custom_payment_type_order' );
hb_active_payment_gateways
Ce filtre s'applique à la liste des passerelles de paiement qui ont été activées.
Paramètre:
$gateways: (tableau) liste des types de paiement actifs.
Exemple:
Inverser l'ordre des options de passerelles de paiement, dans le formulaire de paiement, lorsque plusieurs d'entre elles sont activées.
function custom_payment_gateway_order( $gateways ) {
$gateways = array_reverse( $gateways );
return $gateways;
}
add_filter( 'hb_active_payment_gateways', 'custom_payment_gateway_order' );
hb_stripe_credit_cards_icons
Ce filtre est appliqué à l’ensemble des icones affichées pour le paiement par carte bancaire Stripe.
Paramètre:
$icons: (tableau) liste des icones des cartes de crédits. Valeur par défaut: array( 'mastercard', 'visa', 'americanexpress' ). Les valeurs possibles sont : 'amazon', 'americanexpress', 'delta', 'diners', discover', 'ebay', ''jcb', maestro', 'mastercard', 'solo', 'visa', 'visaelectron', 'switch'
Exemple:
Afficher uniquement les images pour Visa et Mastercard.
function custom_stripe_payment_icons( $types ) {
$icons = array( 'visa', 'mastercard' );
return $icons;
}
add_filter( 'hb_stripe_credit_cards_icons', 'custom_stripe_payment_icons' );
hb_policies_area_markup
Ce filtre s’applique à la section du processus de réservation qui affiche les cases à cocher pour accepter les CGV ou politique de confidentialité.
Paramètre:
$output: (chaîne de caractères) le code HTML du formulaire.
Exemple:
Ajouter une case à cocher pour une inscription à une newsletter MailChimp. L’utilisation de l’extension MC4WP est nécessaire. Merci de consulter cet article de notre base de connaissances à ce sujet.
function add_mailchimp_to_details_form( $output ) {
$output .= '<h3 class="hb-title hb-title-terms">Our newsletter</h3>';
$output .= '<p>';
$output .= '<label>';
$output .= '<input type="checkbox" name="mc4wp-subscribe" value="1" />';
$output .= 'Yes! Subscribe me to the your monthly newsletter.</label>';
$output .= '</p>';
return $output;
}
add_filter( 'hb_policies_area_markup', 'add_mailchimp_to_details_form' );
hb_invoice_table_style
Ce filtre s'applique aux styles de la facture. Vous trouverez les styles appliqués dans wp-content/plugins/hbook/utils/utils.php. Cherchez la fonction nommée "get_invoice_table".
Paramètres:
$style: (chaîne de caractères) l'ensemble des styles CSS appliqués.
$resa: (tableau) l'information de réservation
hb_create_reservation
Cette action est exécutée lorsqu'une nouvelle réservation est ajoutée à la table de réservations de la base de donnée.
Paramètre:
$resa_info: (tableau) toutes les informations de la nouvelle réservation.
hb_create_customer
Cette action est exécutée lorsqu'un nouveau client est ajouté à la table de clients de la base de donnée.
Paramètre:
$customer_info: (tableau) toutes les informations du nouveau client.
hb_reservations_updated
Cette action est exécutée lorsque la table de réservation de la base de données est mise à jour.
Paramètres: aucun
hb_blocked_accom_updated
Cette action est exécutée lorsque la table contenant les hébergements bloqués est mise à jour.
Paramètres: aucun
hb_accommodation_list_markup
Ce filtre peut être utilisé pour modifier l’affichage de la liste de type d’hébergements.
Paramètre:
$output: (chaîne de caractères) qui contient le HTML qui sera affiché.
Exemple:
Pour ouvrir la page du type d’hébergement (lien) dans le même onglet plutôt que dans un nouvel onglet.
Dans le fichier functions.php de votre thème enfant, vous ajouterez:
function change_target_self( $output ) {
return str_replace( '_blank', '_self', $output );
}
add_filter( 'hb_accommodation_list_markup', 'change_target_self' );
hb_resa_manager_capabilities
Ce filtre est appliqué à la liste des capacités de l'utilisateur ayant le rôle "Gestion des réservations".
Paramètre:
$capabilities: (array) contient la liste des différentes "capabilities".
Exemple:
Si votre thème redirige automatiquement tout utilisateur avec la capacité "read" vers le front-end, vous pouvez ajouter des capacités qui sont celles des roles "Contributor" ou "Author". Pour consulter l'ensemble des capacités et roles WordPress, se référer à cet article du Codex.
function hb_add_capabiliites_to_manager( $capabilities ) {
$added_capabilities = array( 'edit_posts', 'delete_pots' );
$capabilities = array_merge( $added_capabilities, $capabilities );
return $capabilities;
}
add_filter( 'hb_resa_manager_capabilities', 'hb_add_capabiliites_to_manager' );
hb_email_actions
Ce filtre est appliqué à l'ensemble des actions que vous pouvez voir dans la colonne "Actions " du menu HBook > Emails.
Paramètre:
$actions: (tableau) contient les différentes actions avec: une clé (chaine de caractères) => valeur (chaine de caractères). Les clés à utiliser sont 'action_value' et 'action_text'.
Exemple:
Ajouter un envoi d’email pour l’action “Marquer comme payé”.
function add_action_to_email_actions( $actions ) {
$actions[] = array(
'action_value' => 'resa_marked_paid',
'action_text' => esc_html__( 'Reservation marked as paid', 'hbook-admin' ),
);
return $actions;
}
add_filter( 'hb_email_actions', 'add_action_to_email_actions' );
Puis dans la fonction public function hb_update_resa_paid() que vous trouverez dans le répertoire hbook/admin-pages/admin-ajax-actions.php, vous ajouterez
$this->utils->send_email( 'resa_marked_paid', $_POST['resa_id'] );
Cette fonction deviendra donc:
public function hb_update_resa_paid() {
if ( $this->hb_verify_nonce() && $this->hb_user_can_manage_resa() ) {
if ( $this->hbdb->update_resa_paid( $_POST['resa_id'], $_POST['resa_price'], $_POST['resa_paid'] ) !== false ) {
echo( 'paid updated' );
$this->utils->send_email( 'resa_marked_paid', $_POST['resa_id'] );
} else {
echo( 'Database error.' );
}
}
die;
}
hb_scheduled_min_hour
Les emails programmés sont envoyés par défaut entre 7h et 23h (fuseau horaire défini dans WordPress), dès qu’une visite sur votre site a lieu (côté admin ou côté client).
Defaut: 7 (7am). Attend un nombre entre 0 et 23.
Paramètre: Aucun.
Exemple:
function change_minimum_scheduled_hour() {
return 9;
}
add_filter( 'hb_scheduled_min_hour', 'change_minimum_scheduled_hour' );
hb_scheduled_max_hour
Les emails programmés sont envoyés par défaut entre 7h et 23h (fuseau horaire défini dans WordPress), dès qu’une visite sur votre site a lieu (côté admin ou côté client).
Defaut: 11 (11pm). Attend un nombre entre 0 et 23.
Paramètre: Aucun.
Exemple:
function change_maximum_scheduled_hour() {
return 20;
}
add_filter( 'hb_scheduled_max_hour', 'change_maximum_scheduled_hour' );
hb_language_list
Ce filtre s'applique à la liste des langues gérées par HBook dans le cas d'un site multi-langues.
Paramètre:
$langs: (tableau) une clé (chaîne de caractères) => valeur (chaîne de caractères) tableau qui contient les informations concernant les différentes langues (la clé est la locale de la langue, la valeur est le nom de la langue).
Exemple:
Si vous utilisez un plugin multi-langue qui n'est pas Polylang ou WPML et pour lequel les langues ne sont pas détectées automatiquement par HBook:
function new_language_list( $langs ) {
$added_languages = array(
'fr_FR' => 'French',
'it_IT' => 'Italian',
'es_ES' => 'Spanish',
'de_DE' => 'German'
);
$langs = array_merge( $added_languages, $langs );
return $langs;
}
add_filter( 'hb_language_list', 'new_language_list' );
hb_uncompleted_resa_deletion_delay
Ce filtre permet de modifier le délai avant suppression d’une réservation pour laquelle le paiement n’a pas été finalisé, et qui est montrée avec le statut “En cours” (le client a fermé l’onglet, a abandonné le paiement, etc.). Par défaut, HBook supprime toute réservation dont le statut est resté “En cours”, après un délai d’1 heure.
Valeur par défaut: 1 heure
Valeur attendue: (entier + "MINUTE" ou "HOUR")
Exemple:
Supprimer les réservations non finalisées après 30 minutes.
function custom_uncompleted_resa_deletion_delay( $default_delay ) {
return '30 MINUTE';
}
add_filter( 'hb_uncompleted_resa_deletion_delay', 'custom_uncompleted_resa_deletion_delay' );
hb_old_resa_logs_deletion_delay
Ce filtre permet de modifier le délai avant suppression des logs des changements de statuts de réservation. Ces logs servent aux développeurs (et à nous-même) pour analyser le parcours de statut d’une réservation ou faire un debug.
Valeur par défaut: 14 jours.
Valeur attendue: (entier + "DAY")
Exemple:
Conserver les logs pendant 28 jours.
function custom_resa_logs_deletion_delay( $default_delay ) {
return '28 DAY';
}
add_filter( 'hb_old_resa_logs_deletion_delay', 'custom_resa_logs_deletion_delay' );
hb_retina_scale_factor
Paramètre:
$retina_scale_factor: (entier) le facteur d'échelle appliqué aux images affichées par HBook (par défaut, l'échelle est de 1).
Exemple:
Afficher les images pour les appareils supportant le retina x 3.
function custom_retina_scale_factor( $retina_scale_factor ) {
return 3;
}
add_filter( 'hb_retina_scale_factor', 'custom_retina_scale_factor' );
hb_image_sizes
Ce filtre peut être utile si vous avez choisi dans HBook > Divers > Divers que vous utilisiez un redimensionnemnt des images "Statique". Lorsque vous choisissez "Statique", HBook n'utilise pas AquaResizer.
Paramètre:
$sizes: (tableau) une clé (chaîne de caractères) => valeur (chaîne de caractères) tableau contenant les différentes tailles, chaque taille ayant les clés "width" et "height"
hb_ical_agenda_check_in_time
Si vous utilisez le paramètre de requête “agenda” pour inclure des heures dans le format des informations partagées pour les propriétés iCal DTSTART et DTEND, vous souhaiterez peut-être modifier l'heure transmise à DTSTART (heure de départ). Par défaut, nous transmettons “15” (3pm).
Paramètre: Aucun.
La valeur par défaut est 15 (3pm). Attendez vous un nombre compris entre 0 et 23.
function change_agenda_check_in_time() {
return 16;
}
add_filter( 'hb_ical_agenda_check_in_time', 'change_agenda_check_in_time' );
hb_ical_agenda_check_out_time
Si vous utilisez le paramètre de requête “agenda” pour inclure des heures dans le format des informations partagées pour les propriétés iCal DTSTART et DTEND, vous souhaiterez peut-être modifier l'heure transmise à DTEND (heure de départ). Par défaut, nous transmettons “11” (11 heures).
Paramètre: Aucun.
La valeur par défaut est 11 (11am). Attendez vous un nombre compris entre 0 et 23.
function change_agenda_check_out_time() {
return 10;
}
add_filter( 'hb_ical_agenda_check_out_time', 'change_agenda_check_out_time' );
hb_ical_additional_info
Paramètre:
$default_comment_data: (tableau) un tableau listant les mots-clés recherchés dans le champ “DESCRIPTION” d’un évènement iCal d’un calendrier externe. Si trouvé, HBook affichera cette information dans la colonne “Commentaires” de la résevation.
Exemple avec des données fictives "Immatriculation de véhicule" et "Application spéciale".
function my_platforms_comment_data ( $default_comment_data ) {
$additional_data = array(
'Immatriculation de véhicule',
'Application spéciale'
);
$updated_comment_data = array_merge( $default_comment_data, $additional_data );
return $updated_comment_data;
}
add_filter( 'hb_ical_additional_info', 'my_platforms_comment_data' );
hb_ical_additional_non_standard_properties
Paramètre:
$other_ical_non_standard_properties: (tableau) un tableau listant les mots-clés recherchés dans un évènement iCal d’un calendrier externe. Si trouvé, HBook affichera cette information dans la colonne “Commentaires” de la résevation.
Exemple avec des données fictives "X-EXTRAS" y "X-TOTAL-AMOUNT".
function my_platforms_non_standard_properties ( $other_ical_non_standard_properties ) {
$additional_properties = array(
'X-EXTRAS',
'X-TOTAL-AMOUNT'
);
$updated_other_non_standard_properties = array_merge( $other_ical_non_standard_properties, $additional_properties );
return $updated_other_non_standard_properties;
}
add_filter( 'hb_ical_additional_non_standard_properties', 'my_platforms_non_standard_properties' );
hb_ical_nb_years_history
Si vous utilisez le paramètre de requête “future_only” pour inclure les réservations passées/dates bloquées dans l'exportation iCal, vous pouvez modifier le nombre d'années incluses dans l'exportation. Par défaut, HBook inclut 2 ans d'historique, lorsque le paramètre “future_only” est passé à "no" comme valeur (pour remplacer la valeur par défaut d'inclure seulement les réservations futures et les dates bloquées).
function custom_ical_nb_years_history ( $default_delay ) {
return '6';
}
add_filter( 'hb_ical_nb_years_history', 'custom_ical_nb_years_history' );
Fonctions JavaScript
hbook_show_accom_list
Le plugin HBook essaie d'appeler cette fonction chaque fois que la liste des types d'hébergement disponible est montrée.
Exemple:
Lancer une fonction JavaScript après que la liste des types d'hébergement disponible a été affichée.
Ajoutez dans le fichier functions.php de votre thème-enfant:
add_action( 'wp_enqueue_scripts', 'enqueue_my_js_scripts' );
function enqueue_my_js_scripts() {
wp_enqueue_script( 'my-script', get_stylesheet_directory_uri() . '/my-script.js', array(), null, true );
}
et dans le répertoire du thème-enfant, créez un fichier my-script.js file qui contiendra:
function hbook_show_accom_list() {
my_js_function();
}
hbook_reservation_done
HBook essaie d'appeler cette fonction chaque fois qu'une réservation est complétée avec succès par un client.
Exemple:
Lancer une fonction JavaScript après qu'une réservation a été reçue. Ceci peut être utilisé par exemple si vous avez un code de conversion de Google Analytics, un snippet de Adwords...
Ajoutez dans le fichier functions.php de votre thème-enfant:
add_action( 'wp_enqueue_scripts', 'enqueue_my_js_scripts' );
function enqueue_my_js_scripts() {
wp_enqueue_script( 'my-script', get_stylesheet_directory_uri() . '/my-script.js', array(), null, true );
}
et dans le répertoire du thème-enfant, créez un fichier my-script.js file qui contiendra:
function hbook_reservation_done() {
my_js_function();
}