Auth-Modul
Übersicht
„Baza Booking Calendar Auth“ ist ein Authentifizierungsmodul für WordPress mit umfassendem Funktionsumfang, das ein übersichtliches und benutzerfreundliches Kontosystem bietet.
Es umfasst die Anmeldung, die Registrierung sowie ein persönliches Dashboard mit separaten Bereichen für die Profilverwaltung, Buchungen und Treuefunktionen.
Das Modul ist vollständig kompatibel mit den WordPress-Standards und lässt sich über Filter und Aktionen anpassen.
URL-Struktur
Nach der Aktivierung erstellt „Baza Booking Calendar Auth“ automatisch übersichtliche und intuitive URLs:
- /account/: Hauptseite des Kontos
- /account/login/: Anmeldeformular
- /account/register/: Registrierungsformular
- /account/lostpassword/: Seite „Passwort vergessen“
- /account/resetpass/: Seite zum Zurücksetzen des Passworts
- /account/dashboard/: Benutzer-Dashboard
- /account/dashboard/bookings/: Meine Buchungen
- /account/dashboard/loyalty/: Treueprogramm
- /account/dashboard/profile/: Profileinstellungen
Diese Struktur sorgt für eine einheitliche und SEO-freundliche Navigation für die Nutzer.
Kernfunktionalität
Baza Booking Calendar Auth bietet alle wesentlichen Funktionen für die Kontoverwaltung:
- Sichere Benutzerregistrierung mit Validierung und E-Mail-Benachrichtigungen
- An- und Abmeldung über die native WordPress-Authentifizierung
- Benutzer-Dashboard mit mehreren Registerkarten und flexibler Navigation
- Profil bearbeiten (Name, E-Mail-Adresse, Telefonnummer usw.)
- Passwortänderung mit Echtzeit-Validierung
- Konto-Löschung mit Passwortbestätigung
- URL-Umschreibung





Kontoguthaben
Das Kontoguthaben wird in den „Allgemeinen Einstellungen“ über den Schalter „Benutzerguthaben aktivieren“ aktiviert; er schaltet Aufladung, Zahlungen vom Guthaben und das Ansammeln von Bonus für registrierte Nutzer frei.
Nach der Aktivierung kann der Administrator den Mindestbetrag für die Aufladung, die Gültigkeitsdauer des Guthabens (in Tagen), den Mindestbetrag für Zahlungen vom Guthaben sowie den Bonusprozentsatz bei Aufladung konfigurieren.
Nutzer laden ihr Guthaben über das aktuell aktive Zahlungsgateway direkt im Guthaben-Tab auf. Sobald Guthaben vorhanden ist, kann es zur Bezahlung einer Buchung verwendet werden, statt erneut über das Zahlungsgateway zu gehen.
Jede Aufladung und Abbuchung wird in einem Transaktionsverlauf mit Datum, Aktion und Betrag erfasst.
Nach der Aktivierung ist der Guthaben-Tab unter /account/dashboard/balance/ neben den anderen Konto-Tabs verfügbar (Buchungen, Treueprogramm, Profileinstellungen).
Shortcodes
Das Modul unterstützt Shortcodes für eine einfache Einbettung. Außerdem können Sie Formularbezeichnungen und Platzhalter mithilfe von Shortcode-Parametern anpassen, zum Beispiel:
[baza_booking_calendar_auth] - displays login and registration forms
[baza_booking_calendar_auth show_welcome="false"] - Disable welcome
[baza_booking_calendar_balance]: outputs the formatted balance, e.g. $150.00
[baza_booking_calendar_balance format="raw"]: just the number 150.00
[baza_booking_calendar_dashboard] - displays the user dashboard
[baza_booking_calendar_dashboard default_tab="profile"] - opens a specific dashboard tab by default
[baza_booking_calendar_auth
redirect="/account/dashboard/"
show_welcome="true"
welcome_text="Welcome Back!"
dashboard_button_text="Go to Dashboard"
login_title="Sign In"
register_title="Create Account"
forgot_password_text="Forgot Password?"
no_account_text="Don't have an account? Register"
have_account_text="Already have an account? Login"
registration_success_text="Registration successful! You can now login."
login_button_text="Sign In"
register_button_text="Sign Up"
username_label="Username or Email"
password_label="Password"
email_label="Email"
confirm_password_label="Confirm Password"
first_name_label="First Name"
last_name_label="Last Name"
remember_me_label="Remember Me"
username_placeholder="Enter your username"
email_placeholder="Enter your email address"
password_placeholder="Enter your password"
first_name_placeholder="Enter your first name"
last_name_placeholder="Enter your last name"
]Alle verfügbaren Filter (Hooks)
Anmeldeformular:
- baza_bc_before_login_form: Vor dem gesamten Anmeldeformular
- baza_bc_before_login_form_fields: Vor den Formularfeldern
- baza_bc_after_login_form_fields: Nach den Formularfeldern
- baza_bc_after_login_form: Nach dem gesamten Anmeldeformular
Registrierungsformular:
- baza_bc_before_register_form: Vor dem gesamten Registrierungsformular
- baza_bc_register_form_start: Beginn des Formulars (nach dem öffnenden Tag)
- baza_bc_register_form_after_username: Nach dem Feld „Benutzername“
- baza_bc_register_form_after_email: Nach dem E-Mail-Feld
- baza_bc_register_form_after_password: Nach dem Passwortfeld
- baza_bc_register_form_after_password_confirm: Nach der Passwortbestätigung
- baza_bc_register_form_after_first_name: Nach dem Vornamen
- baza_bc_register_form_after_last_name: Nach dem Nachnamen
- baza_bc_register_form_before_submit: Vor dem Absenden
- baza_bc_register_form_after_submit: Nach dem Klicken auf die Schaltfläche „Absenden“
- baza_bc_after_register_form: Nach dem Ausfüllen des gesamten Registrierungsformulars
Formular zum Zurücksetzen des Passworts:
- baza_bc_before_lostpassword_form: Vor dem gesamten Formular zur Passwortwiederherstellung
- baza_bc_before_lostpassword_form_fields: Vor den Formularfeldern
- baza_bc_lostpassword_form_before_submit: Vor dem Klicken auf die Schaltfläche „Absenden“
- baza_bc_lostpassword_form_after_submit: Nach dem Klicken auf die Schaltfläche „Absenden“
- baza_bc_after_lostpassword_form_fields: Nach den Formularfeldern
- baza_bc_after_lostpassword_form: Nach dem Ausfüllen des Formulars zur Passwortwiederherstellung
Formular zum Zurücksetzen des Passworts:
- baza_bc_before_resetpass_form: Vor dem gesamten Formular zum Zurücksetzen des Passworts
- baza_bc_before_resetpass_form_fields: Vor den Formularfeldern
- baza_bc_resetpass_form_before_submit: Vor dem Klicken auf die Schaltfläche „Absenden“
- baza_bc_resetpass_form_after_submit: Nach dem Klicken auf die Schaltfläche „Absenden“
- baza_bc_after_resetpass_form_fields: Nach den Formularfeldern
- baza_bc_after_resetpass_form: Nach dem Ausfüllen des gesamten Formulars zum Zurücksetzen des Passworts
<?php
/**
* FILTERS
*/
// Modify dashboard tabs
add_filter( 'baza_bc_dashboard_tabs', function( $tabs, $current_tab ) {
$tabs['custom'] = array(
'title' => __( 'Custom Tab', 'textdomain' ),
'url' => home_url( '/account/dashboard/custom/' ),
'order' => 15
);
unset( $tabs['loyalty'] );
return $tabs;
}, 10, 2 );
// Render custom tab content
// Use together with baza_bc_dashboard_tabs to add full custom tab
add_filter( 'baza_bc_dashboard_render_tab', function( $content, $tab ) {
if ( $tab !== 'custom' ) return $content;
ob_start();
?>
<div class="bbc-custom-tab">
<h3><?php _e( 'Custom Tab', 'textdomain' ); ?></h3>
<p>Your custom content here.</p>
</div>
<?php
return ob_get_clean();
}, 10, 2 );
// Number of items per page (default: 10)
add_filter( 'baza_bc_account_bookings_per_page', function( $per_page ) {
return 20;
});
// Bookings data before sorting
add_filter( 'baza_bc_account_bookings_before_sort', function( $bookings ) {
return $bookings;
});
// Bookings data after sorting
add_filter( 'baza_bc_account_bookings_after_sort', function( $bookings, $orderby, $order ) {
return $bookings;
}, 10, 3 );
// Show/hide table count
add_filter( 'baza_bc_account_bookings_show_table_count', '__return_false' );
// Show/hide pagination
add_filter( 'baza_bc_account_bookings_show_pagination', '__return_false' );
// Show/hide entire table
add_filter( 'baza_bc_account_bookings_show_table', '__return_false' );
// Show/hide empty bookings message
add_filter( 'baza_bc_account_bookings_show_empty_message', '__return_false' );
// Pagination arguments
add_filter( 'baza_bc_account_bookings_pagination_args', function( $args ) {
return $args;
});
/**
* ACTIONS
*/
// Before content
add_action( 'baza_bc_dashboard_before_content', function( $user, $tab ) {
echo '<div class="content-header">Current tab: ' . $tab . '</div>';
}, 10, 2 );
// After content
add_action( 'baza_bc_dashboard_after_content', function( $user, $tab ) {
echo '<div class="content-footer">Need help? Contact support</div>';
}, 10, 2 );
// Before title
add_action( 'baza_bc_account_bookings_before_title', function() {
echo '<div class="custom-alert">Special announcement</div>';
});
// After title
add_action( 'baza_bc_account_bookings_after_title', function() {
echo '<p class="subtitle">Manage your bookings below</p>';
});
// Before controls (where sorting would go)
add_action( 'baza_bc_account_bookings_before_controls', function() {
echo '<div class="custom-filters">Custom filters here</div>';
});
// Inside table nav on the right side
add_action( 'baza_bc_account_bookings_table_nav_right', function( $orderby, $order, $per_page ) {
?>
<div class="bbc-table-sort">
<label for="bbc-sort"><?php _e( 'Sort:', 'baza-booking-calendar' ); ?></label>
<select id="bbc-sort" class="bbc-sort-select">
<option value="date-desc" <?php selected( $orderby === 'date' && $order === 'desc' ); ?>>
<?php _e( 'Newest First', 'baza-booking-calendar' ); ?>
</option>
<option value="date-asc" <?php selected( $orderby === 'date' && $order === 'asc' ); ?>>
<?php _e( 'Oldest First', 'baza-booking-calendar' ); ?>
</option>
<option value="price-desc" <?php selected( $orderby === 'price' && $order === 'desc' ); ?>>
<?php _e( 'Price: High to Low', 'baza-booking-calendar' ); ?>
</option>
<option value="price-asc" <?php selected( $orderby === 'price' && $order === 'asc' ); ?>>
<?php _e( 'Price: Low to High', 'baza-booking-calendar' ); ?>
</option>
</select>
</div>
<?php
}, 10, 3 );
// After controls
add_action( 'baza_bc_account_bookings_after_controls', function( $orderby, $order, $per_page ) {
echo '<div class="custom-notice">Current sort: ' . $orderby . '</div>';
}, 10, 3 );
// Before table
add_action( 'baza_bc_account_bookings_before_table', function( $bookings ) {
echo '<div class="table-info">Showing ' . count( $bookings ) . ' bookings</div>';
});
// Before each row
add_action( 'baza_bc_account_bookings_before_row', function( $booking ) {
// Add custom class or markup before row
});
// After each row
add_action( 'baza_bc_account_bookings_after_row', function( $booking ) {
// Add expandable details row
echo '<tr class="booking-details"><td colspan="5">Details for ' . $booking['order_id'] . '</td></tr>';
});
// After table
add_action( 'baza_bc_account_bookings_after_table', function( $bookings ) {
echo '<div class="table-summary">Total bookings: ' . count( $bookings ) . '</div>';
});
// Before pagination
add_action( 'baza_bc_account_bookings_before_pagination', function( $paged, $total_pages ) {
echo '<div class="pagination-info">Page ' . $paged . ' of ' . $total_pages . '</div>';
}, 10, 2 );
// After pagination
add_action( 'baza_bc_account_bookings_after_pagination', function( $paged, $total_pages ) {
echo '<a href="#top" class="back-to-top">Back to top</a>';
}, 10, 2 );
// After all content
add_action( 'baza_bc_account_bookings_after_content', function() {
echo '<div class="booking-help">Need help? Contact support</div>';
});
/**
* FILTERS LOGIN AND REGISTER FORM
*/
/**
* LOGIN FORM HOOKS
*/
// Add content before login form
add_action( 'baza_bc_before_login_form', function( $atts ) {
echo '<div class="login-notice">Welcome back!</div>';
});
// Add content before form fields
add_action( 'baza_bc_before_login_form_fields', function( $atts ) {
echo '<p class="login-info">Please enter your credentials</p>';
});
// Add content after form fields
add_action( 'baza_bc_after_login_form_fields', function( $atts ) {
echo '<div class="social-login"><button>Login with Google</button></div>';
});
// Add content after login form
add_action( 'baza_bc_after_login_form', function( $atts ) {
echo '<p class="help-text">Need help? <a href="/support">Contact support</a></p>';
});
/**
* REGISTRATION FORM HOOKS
*/
// Add content before registration form
add_action( 'baza_bc_before_register_form', function( $atts ) {
echo '<div class="register-benefits">Join us and get 10% off!</div>';
});
// Add content after form opens
add_action( 'baza_bc_register_form_start', function( $atts ) {
echo '<p class="form-intro">Fill in all required fields</p>';
});
// Add phone field after email
add_action( 'baza_bc_register_form_after_email', function( $atts ) {
?>
<div class="form-row">
<label for="phone">Phone *</label>
<input type="tel" name="phone" id="phone" class="regular-text" placeholder="+44" required />
</div>
<?php
});
// Add hint after username
add_action( 'baza_bc_register_form_after_username', function( $atts ) {
echo '<small class="field-hint">Username cannot be changed later</small>';
});
// Add hint after password
add_action( 'baza_bc_register_form_after_password', function( $atts ) {
echo '<small class="field-hint">Password must be at least 8 characters</small>';
});
// Add hint after password confirm
add_action( 'baza_bc_register_form_after_password_confirm', function( $atts ) {
echo '<small class="field-hint">Passwords must match</small>';
});
// Add hint after first name
add_action( 'baza_bc_register_form_after_first_name', function( $atts ) {
echo '<small class="field-hint">Optional but recommended</small>';
});
// Add custom field after last name
add_action( 'baza_bc_register_form_after_last_name', function( $atts ) {
?>
<div class="form-row">
<label for="company">Company</label>
<input type="text" name="company" id="company" class="regular-text" placeholder="Your company name" />
</div>
<?php
});
// Add terms checkbox before submit button
add_action( 'baza_bc_register_form_before_submit', function( $atts ) {
?>
<div class="form-row">
<label>
<input type="checkbox" name="terms" required />
I agree to <a href="/terms">Terms and Conditions</a>
</label>
</div>
<?php
});
// Add content after submit button
add_action( 'baza_bc_register_form_after_submit', function( $atts ) {
echo '<p class="privacy-notice">Your data is protected by our privacy policy</p>';
});
// Add content after registration form
add_action( 'baza_bc_after_register_form', function( $atts ) {
echo '<div class="social-register"><button>Register with Facebook</button></div>';
});
/**
* TEXTS, REDIRECTS, SWITCHES
*/
// Text of the button of [baza_booking_calendar_auth] for a visitor and for a logged-in user
add_filter( 'baza_bc_auth_login_text', function( $text ) {
return __( 'Sign in', 'textdomain' );
});
add_filter( 'baza_bc_auth_account_text', function( $text ) {
return __( 'Account', 'textdomain' );
});
// Change the attributes of [baza_booking_calendar_auth] for every use
add_filter( 'baza_bc_auth_shortcode_atts', function( $atts ) {
return $atts;
});
// Where to go after logging out (default: home page)
add_filter( 'baza_bc_logout_redirect_url', function( $url ) {
return home_url( '/goodbye/' );
});
// Switch the whole auth module off
add_filter( 'baza_bc_auth_init', '__return_false' );
// Live updates of the bookings table in the account (default follows the calendar setting)
add_filter( 'baza_bc_account_live_updates', '__return_true' );
// How often the table asks for news, in seconds (never less than 5)
add_filter( 'baza_bc_account_live_updates_delay', function( $seconds ) {
return 30;
});
/**
* REGISTRATION
* The form creates the account with the WordPress function wp_create_user(), so the core hook user_register runs.
*/
// Save a custom field that was added with baza_bc_register_form_after_email
add_action( 'user_register', function( $user_id ) {
if ( isset( $_POST['phone'] ) ) {
update_user_meta( $user_id, 'phone', sanitize_text_field( wp_unslash( $_POST['phone'] ) ) );
}
});Anwendungsbeispiele
<?php
// Example: put a banner above the content of every dashboard tab
add_action( 'baza_bc_dashboard_before_content', function( $user, $tab ) {
echo '<div class="notice">Hello, ' . esc_html( $user->display_name ) . '</div>';
}, 10, 2 );
// Example: add a tab and render it
add_filter( 'baza_bc_dashboard_tabs', function( $tabs, $current_tab ) {
$tabs['invoices'] = array(
'title' => __( 'Invoices', 'textdomain' ),
'url' => home_url( '/account/dashboard/invoices/' ),
'order' => 15,
);
return $tabs;
}, 10, 2 );
add_filter( 'baza_bc_dashboard_render_tab', function( $content, $tab ) {
return 'invoices' === $tab ? '<p>' . esc_html__( 'No invoices yet.', 'textdomain' ) . '</p>' : $content;
}, 10, 2 );
// Example: show only confirmed bookings, five per page
add_filter( 'baza_bc_account_bookings_per_page', function() { return 5; } );
add_filter( 'baza_bc_account_bookings_before_sort', function( $bookings ) {
return array_filter( $bookings, function( $booking ) {
return in_array( $booking['order_status'], array( 'booked', 'completed' ), true );
});
});
// Example: hide the table count and the pagination
add_filter( 'baza_bc_account_bookings_show_table_count', '__return_false' );
add_filter( 'baza_bc_account_bookings_show_pagination', '__return_false' );
// Example: a short text above the registration form fields and a terms checkbox before the button
add_action( 'baza_bc_register_form_start', function( $atts ) {
echo '<p class="form-intro">' . esc_html__( 'Fill in all required fields.', 'textdomain' ) . '</p>';
});
add_action( 'baza_bc_register_form_before_submit', function( $atts ) {
echo '<label><input type="checkbox" name="terms" required /> ' . esc_html__( 'I agree to the terms', 'textdomain' ) . '</label>';
});