| 开发者 |
codeholt
ashrafulsarkar |
|---|---|
| 更新时间 | 2026年11月13日 23:11 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.1 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
[bookyzo_booking] shortcode, the Booking Form block and the Elementor widget[bookyzo_booking type="table"]) or a single item ([bookyzo_booking bookable_item_id="5"])[bookyzo_account] page for upcoming and past bookings, rescheduling and cancellingbookyzo/v1[bookyzo_packages], block and Elementor widget)/wp-content/plugins/ or install it via the Plugins screen.[bookyzo_booking] shortcode (or the Booking Form block) to any page.byzo_bookable_items_offering_service — ( int[] $bookable_item_ids, int $service_id ) Which bookable items offer a given service, for "any available staff" resolution. Default array().byzo_service_price — ( float|null $price, int $service_id, int $bookable_item_id ) Resolved price for a service booked with a specific staff member. Default null (falls back to the bookable item's own price).byzo_deposit_amount — ( float|null $amount, float $payment_amount, int $bookable_item_id ) How much of a booking's total is due online now as a deposit. Default null (pay in full).byzo_default_settings — ( array $defaults ) Default values seeded into the business-settings option on activation.byzo_rest_controllers — ( array $controllers ) REST controller instances registered on rest_api_init.byzo_payment_gateways — ( array $gateways ) Registered payment gateways shown on the Payments settings screen, keyed by gateway id. Default: Stripe only.byzo_payment_gateway_defaults — ( array $defaults ) Default settings shape for each registered gateway, keyed by gateway id. Default: Stripe only.byzo_validate_payment_gateway_settings — ( array|WP_Error $current, string $gateway_id, array $data ) Validates and merges a settings patch for a non-Stripe gateway. Only consulted for a gateway that byzo_payment_gateways actually registered.byzo_rest_public_permission — ( bool $allowed, WP_REST_Request $request ) Permission check for guest-allowed REST routes.byzo_booking_rate_limit_max / byzo_booking_rate_limit_window — ( int ) Per-IP guest booking rate limit (default 20 requests / 600 seconds) and its window in seconds.byzo_client_ip — ( string $ip ) The IP address used for rate limiting.byzo_dev_server_url — ( string $url ) Vite dev server URL used only in local development.byzo_unit_price — ( float $price, int $bookable_item_id, array $slot ) Per-booking unit price adjustment applied right after service-price resolution and before tax. Default: unmodified $price.byzo_pdf_invoice_enabled — ( bool $enabled ) Whether a downloadable PDF invoice is available from the customer dashboard. Default false.byzo_custom_fields_for_bookable_item — ( array $fields, int $bookable_item_id ) Custom form fields to render on the booking widget for a given bookable item, each { id, label, field_type, options, required }. Default array().byzo_addons_for_bookable_item — ( array $addons, int $bookable_item_id ) Add-ons to render on the booking widget for a given bookable item, each { id, name, price }. Default array().byzo_resolve_addons — ( array $resolved, int[] $addon_ids, int $bookable_item_id ) Resolves client-submitted add-on ids into real, currently-active, correctly-scoped { id, name, price } rows at booking-creation time — an id that doesn't resolve is silently dropped. Default array().byzo_appearance_css_vars — ( string $css, array $settings ) --prop:value; custom-property pairs generated from the Appearance settings. Default: the built-in property set, or '' when nothing was customized.byzo_appearance_css_declarations — ( string $css, array $settings ) prop:value; plain CSS declarations generated from the Appearance settings. Default: the built-in declaration set, or '' when nothing was customized.byzo_ticket_tiers_for_bookable_item — ( array $tiers, int $bookable_item_id ) Ticket tiers to render on the booking widget for a given Event bookable item, each { id, name, price, capacity_remaining }. Default array().byzo_ticket_tier_price — ( float|null $price, int $ticket_tier_id ) Resolved price for a specific ticket tier. Default null (falls back to the bookable item's own price).byzo_claim_ticket_tier — ( bool|null $claimed, int $ticket_tier_id, int $party_size ) Atomically claims capacity on a ticket tier at booking-creation time; false means sold out (rolls back the slot's own capacity claim). Default null (no tier system installed, nothing to claim).byzo_qr_ticket_enabled — ( bool $enabled ) Whether a downloadable QR e-ticket is available from the customer dashboard. Default false.byzo_loaded — Fires once the plugin is fully loaded.byzo_bookable_item_created — ( int $bookable_item_id ) After a new bookable item is created.byzo_bookable_item_activated — ( int $bookable_item_id ) After a bookable item transitions from inactive to active.byzo_booking_created — ( int $booking_id ) After a new booking is created.byzo_widget_rendered — ( array $config ) Each time a booking form is rendered on a page, so an add-on can enqueue its own front-end scripts.byzo_booking_status_changed — ( int $booking_id, string $new_status, string $old_status ) After a booking's status changes.byzo_booking_payment_status_changed — ( int $booking_id, string $new_status, string $old_status ) After a booking's payment status changes.byzo_notification_sent — ( string $event, int $booking_id ) After a notification email is sent (or attempted).byzo_notification_channels — ( string $event, array $booking, array $placeholders ) Fires after a notification email is sent, with the same placeholders — lets an add-on send the same event via another channel (e.g. SMS/WhatsApp).byzo_booking_rescheduled — ( int $booking_id, int $new_slot_id, int $old_slot_id ) After a booking is moved to a different slot (status itself is untouched, so this is separate from byzo_booking_status_changed).byzo_release_ticket_tier — ( int $ticket_tier_id, int $party_size ) Fires when a ticket-tiered booking is cancelled/rejected/marked no-show, so its tier's claimed capacity can be released back.No. Bookyzo has its own booking system and database tables — it doesn't use WooCommerce products or orders at all.
Yes. Booking is a guest checkout by default — a customer only needs to give their name, email and phone number.
Yes, from Bookyzo → Emails in the admin panel. Every email is a plain-text template with placeholders for the customer's name, the bookable item, the booking time and your business name.
An hourly background task checks for bookings starting in roughly 24 hours and sends a reminder — no setup needed beyond keeping the booking confirmed.
When a customer starts paying online, their time is held for them for a short while (15 minutes by default, set under Bookyzo → Settings → General). If they don't finish in time, the booking is cancelled so someone else can book that time, and the unfinished Stripe payment is cancelled. If their payment still comes through afterwards (a slow bank check, for example), Bookyzo looks at the time again. If the place is still free, the booking is brought back and confirmed, and the customer gets the usual confirmation email. If someone else has taken it, the booking stays cancelled and is marked "Refund due": you and the customer each get an email, and you refund the payment with your payment provider. You can list these bookings with the Payment filter on the Bookings screen.
No. Every feature of this plugin is fully usable with no artificial limits, nag screens or disabled UI.
Yes. It includes all four booking types: Appointment (one staff member, one customer), Table (party-size reservations), Event (ticketed occurrences on dates you set yourself), and Slot (a generic recurring slot with room for more than one booking).
As many as you need, of every type. There is no limit on bookable items, shifts per day or bookings.
The admin app, the booking widget and the account page are Vue apps, built with Vite into the minified files in assets/. Their full, human-readable source, with package.json and the Vite configuration, is public on GitHub: https://github.com/ashrafulsarkar/bookyzo. To rebuild, clone the repository, run npm ci and then npm run build.