Documentation home › Feature Reference
How to read this reference
Every row below was taken from the installed Washlora 2.0.0 theme (laundryes), the Washlora Core plugin (laundryes-core, version 2.0.0) and the Washlora Native Layouts plugin (laundry-native-layouts, version 1.0.0). Internal names still start with laundryes or laundry; they are the keys you will see in the database, in shortcodes and in code. Use this page to look up an exact name. For step-by-step instructions see Admin Screen Procedures and Feature Procedures.
Content types
Washlora Core registers 14 custom content types. All of them use the standard post capabilities, so a user needs edit_posts to see them in the admin. Washlora registers no custom taxonomies; shop data uses the WooCommerce taxonomies (for example product_cat).
| Slug | Label | Admin menu | Supports | Visibility | What it stores |
|---|---|---|---|---|---|
laundry_service | Services | Top-level Services | title, editor, thumbnail, excerpt, page-attributes | Public, REST, URL slug services | Service pages shown by [laundryes_services] and the Laundry Service single template. |
laundry_package | Pricing Packages | Top-level Pricing Packages | title, editor, thumbnail, excerpt, page-attributes | Public, REST, URL slug packages | Pricing cards shown by [laundryes_packages]. |
laundry_testimonial | Testimonials | Top-level Testimonials | title, editor, thumbnail, excerpt, page-attributes | Public, REST, URL slug testimonials | Customer quotes shown by [laundryes_testimonials]. |
laundry_faq | FAQs | Top-level FAQs | title, editor, thumbnail, excerpt, page-attributes | Public, REST, URL slug faqs | Questions and answers shown by [laundryes_faqs]. |
laundry_branch | Branches | Top-level Branches | title, editor, thumbnail, excerpt, custom-fields | Public, REST | Locations used by [laundryes_branches], [laundryes_delivery_zones] and [laundryes_postcode_checker]. |
laundry_booking | Bookings | Top-level Bookings | title only | Private, admin screen only, no REST | Pickup and delivery requests (see Data and privacy). |
laundry_slot | Pickup Slots | Top-level Pickup Slots | title, custom-fields | Private | Pickup time slots listed by [laundryes_slot_selector]. |
laundry_garment | Garment Items | Top-level Garment Items | title, thumbnail, custom-fields | Private | One record per garment tag, created at checkout and read by [laundryes_garment_tracker]. |
laundry_route | Delivery Routes | Top-level Delivery Routes | title, custom-fields | Private | Route records. An order can point to one through the order meta _laundry_route_id. |
laundry_driver | Drivers | Top-level Drivers | title, thumbnail, custom-fields | Private | Driver name, photo and phone shown by [laundryes_driver_status]. |
laundry_quote | Commercial Quotes | Top-level Commercial Quotes | title, custom-fields | Private | Requests sent with [laundryes_commercial_quote]. |
laundry_subscription | Recurring Pickups | Top-level Recurring Pickups | title, custom-fields | Private | Requests sent with [laundryes_recurring_pickup]. |
laundryes_popup | Popups | Top-level Popups | title, editor, custom-fields | Private | Popup content shown in the site footer (see Fields). |
laundry_classic_tpl | Classic Templates | Submenu of Services | title, editor | Private, no REST | One Classic Editor home template per niche, created by the template seeder and used by the one-click demo import. |
Types that list custom-fields have no dedicated meta box. Their fields are edited in the Custom Fields panel (in the block editor, enable it under Preferences, Panels, Custom Fields).
Fields (post meta)
Only keys that Washlora code writes or reads are listed. Keys starting with an underscore are hidden from the Custom Fields panel by WordPress, so for those the “Where edited” column names the screen that saves them, or says that no screen does.
Services, pricing packages and testimonials
| Meta key | Content type | Label and meaning | Type | Where edited |
|---|---|---|---|---|
_laundryes_price | Service, Pricing Package | Starting price (service) or Price (package), shown on the card | Text | Meta box Service Details or Package Details |
_laundryes_unit | Service | Price unit, for example per kg, per item, per bag | Text | Meta box Service Details |
_laundryes_period | Pricing Package | Billing label, for example per month, per order | Text | Meta box Package Details |
_laundryes_featured | Pricing Package | Featured package checkbox (saved as 1 or 0) | Flag | Meta box Package Details |
_laundryes_role | Testimonial | Customer subtitle, for example Homeowner, Hotel Manager | Text | Meta box Customer Details |
_laundryes_rating | Testimonial | Rating from 1 to 5 (field default 5; the card clamps values to 1 to 5) | Number | Meta box Customer Details |
_laundryes_product_id | Service | ID of a WooCommerce product. When it points to a published product, the service page adds an “Order This Service Online” button | Post ID | No screen saves it; it is set by import or custom code |
Branches, slots, drivers and operations records
| Meta key | Content type | Label and meaning | Type | Where edited |
|---|---|---|---|---|
_laundry_address | Branch | Address printed by [laundryes_branches] | Text | Custom Fields panel |
_laundry_phone | Branch | Phone printed by [laundryes_branches] | Text | Custom Fields panel |
_laundry_hours | Branch | Opening hours printed by [laundryes_branches] | Text | Custom Fields panel |
_laundry_postcodes | Branch | ZIP or postcodes served, separated by commas or spaces, used by [laundryes_postcode_checker] | Text | Custom Fields panel |
_laundry_delivery_zones | Branch | Zone description printed by [laundryes_delivery_zones] | Text | Custom Fields panel |
_laundry_delivery_fee | Branch | Delivery fee text printed by [laundryes_delivery_zones] | Text | Custom Fields panel |
_laundry_capacity | Pickup Slot | Capacity of the slot. A slot is hidden from the selector when booked reaches capacity (a capacity of 0 means no limit) | Number | Custom Fields panel |
_laundry_booked | Pickup Slot | Number already booked. Washlora code only reads it, so update it yourself | Number | Custom Fields panel |
_laundry_driver_phone | Driver | Phone shown by [laundryes_driver_status] | Text | Custom Fields panel |
_laundry_tag_code | Garment Item | Tag code in the form LG- plus 32 hexadecimal characters; also the post title | Text | Written automatically at checkout |
_laundry_order_id | Garment Item | WooCommerce order the garment belongs to | Order ID | Written automatically at checkout |
_laundry_order_item_id | Garment Item | Order line item the garment belongs to | Item ID | Written automatically at checkout |
_laundry_status | Garment Item | Starts as received. The tracker also understands cleaning, ready and delivered; any other value shows “In progress” | Key | Custom Fields panel |
_adt_enabled | Popup | Set to 1 to make this the active popup (the first published popup with 1 is used) | Flag | Custom Fields panel (the key is hidden, so add it through custom code or import) |
_adt_delay | Popup | Seconds before the popup appears | Number | Same as above |
Delivery routes use no meta key that Washlora code reads. Order-level operations keys are listed in the next table.
Requests from visitors (bookings, quotes, recurring pickups)
| Meta key | Content type | Meaning | Written by |
|---|---|---|---|
_laundryes_booking_name, _laundryes_booking_email, _laundryes_booking_phone | Booking | Customer contact details | [laundryes_booking_form] |
_laundryes_booking_service | Booking | ID of the chosen Service post (0 if none) | [laundryes_booking_form] |
_laundryes_booking_pickup_date, _laundryes_booking_pickup_window | Booking | Pickup date and window (morning, afternoon or evening) | [laundryes_booking_form] |
_laundryes_booking_delivery_date, _laundryes_booking_delivery_window | Booking | Preferred delivery date and window | [laundryes_booking_form] |
_laundryes_booking_address, _laundryes_booking_notes | Booking | Pickup address and care notes | [laundryes_booking_form] |
_laundryes_booking_niche, _laundryes_booking_status | Booking | Niche slug from the shortcode and the status, always new when created | [laundryes_booking_form] |
_laundryes_order_id | Booking | WooCommerce order number. A booking post titled “Order #N booking” is created for each order line that carries pickup data | Checkout of a [laundryes_booking] request |
_laundryes_niche, _laundryes_pickup_date, _laundryes_pickup_time, _laundryes_delivery_date, _laundryes_delivery_time, _laundryes_address, _laundryes_phone, _laundryes_notes | Booking and order line item | Values entered in the cart booking form, copied from the order line item | Checkout of a [laundryes_booking] request |
_laundry_email, _laundry_volume, _laundry_notes | Commercial Quote | Contact email, estimated weekly volume, requirements. The company name and date are in the post title | [laundryes_commercial_quote] |
_laundry_email, _laundry_frequency, _laundry_address, _adt_niche_slug | Recurring Pickup | Email, frequency (weekly, biweekly, monthly), address, niche. Name and frequency are in the post title | [laundryes_recurring_pickup] |
_laundry_user_id, _laundry_status | Recurring Pickup | Owner user ID and status (active or paused) read by [laundryes_subscription_control]. The request form does not set the user ID, so add it yourself for a customer to see the record | Custom Fields panel |
_laundry_driver_id, _laundry_route_id, _laundry_delivery_status | WooCommerce order | Assigned driver post, route post, and delivery status text (default shown: “Assigned”). The first two are written by the helper laundryes_route_assign() | Custom code |
_laundry_loyalty_points | User | Loyalty points. When an order with a logged-in customer is completed, points equal to the order total rounded down are added | Automatic |
WooCommerce product fields
These fields are added to the General tab of the WooCommerce product editor.
| Meta key | Label | Meaning | Type |
|---|---|---|---|
_lcs_unit | Price unit | Printed after the price when the Price units option is on | Text area |
_lcs_turnaround | Typical turnaround | Shown in the tab “Service & care details” and in the comparison | Text area |
_lcs_included | What is included | Same tab | Text area |
_lcs_preparation | Before collection | Same tab | Text area |
_lcs_limitations | Care limitations | Same tab | Text area |
_lcst_quote_only | Quote-only service | Disables direct purchase; the price shows “Priced after assessment” | Checkbox (yes or no) |
_lcst_quote_page | Enquiry page ID | Published page with your enquiry form; the product links to it with ?lcst_service=ID | Number |
_lcst_care_guide | Garment care guide | One point per line, shown in a “Before you book” panel | Text area |
_adt_niche_slug | (none) | Niche the product belongs to; used to filter the shop, booking list, price calculator and related products. No screen edits it; the niche importer sets it | Text |
Cross-sells are used as the optional add-on services: set them in Product data, Linked Products, Cross-sells.
Page meta managed by the importer, generator and native layouts
These keys control niche pages. They are set by the importers and the generator and are not meant for manual editing, except where a screen is named.
| Meta key | Meaning | Where edited |
|---|---|---|
_lnl_builder | The page’s editor: gutenberg, elementor, wpbakery or classic. Pages with this key receive the native layout styles | Set by import or generator |
_lnl_sections | List of section settings used by Classic Editor pages ([laundry_classic_sections]) | Meta box Washlora page sections (visual controls), shown only on pages whose _lnl_builder is classic |
_lnl_source | ID of the niche’s home page that supplies the identity and design | Set by import or generator |
_lnl_home | Home layout number (1 to 3) of a home page; 0 for an inner page | Set by import or generator |
_lnl_inner_type | Role of an inner page, for example shop; the shop type loads the Commerce Studio assets | Set by import |
_ln_identity | Niche identity (JSON) | Appearance, Niche identity |
_lnl_design | Niche design settings | Appearance, Niche design |
_adt_niche, _adt_niche_name | Niche slug and display name of a page | Set by import or generator |
_laundryes_niche_menu_id | Menu used by the niche header and footer | Set by import or generator |
_lni_source_id, _lni_fingerprint | Importer bookkeeping: original post ID, and a checksum used to keep your edits on a repeat import | Automatic |
_lnl_original_content, _lnl_section_count, _lnl_schema_version, _laundryes_local_batch, _laundryes_local_owner, _laundryes_generator_review, _laundryes_generated_target | Generator bookkeeping: original content backup, section count, batch ID, owner user, review note and menu link target | Automatic |
_adt_layout_variant, _adt_header_variant, _adt_footer_variant, _adt_menu_variant, _adt_feature_role | Per-page layout variant numbers and feature role (read to add body classes, spacing values and a menu entry) | Set by import |
_laundryes_elementor_template_id, _laundryes_classic_template_id, _laundryes_gutenberg_template_id, _laundryes_wpbakery_template, _laundryes_niche_template, _laundryes_slider_shortcode | Links from a niche home page to its per-editor templates and slider shortcode | Set by the template seeder |
Settings and options
Niche identity (Appearance, Niche identity)
Stored as JSON in the post meta _ln_identity of the niche’s home page, not as a site option. Choose the niche at the top of the screen, then save. The theme reads the identity for the niche header, footer and colour variables.
| Field label | Key | Type | Used for |
|---|---|---|---|
| Brand | brand | Text | Niche header and footer name |
| Tagline | tagline | Text | Small line under the name in the header |
| Phone | phone | Text | Header information bar and footer contact |
email | Text | Footer contact | |
| Hours | hours | Text | Header information bar and footer hours |
| Area | area | Text | Service area line in header and footer |
| About | about | Text area | Footer description |
| Primary colour | palette.primary | Colour | CSS variable --ln-primary |
| Dark colour | palette.dark | Colour | --ln-primary-dark |
| Accent colour | palette.accent | Colour | --ln-accent |
| Soft colour | palette.soft | Colour | --ln-soft |
| Ink colour | palette.ink | Colour | --ln-ink |
The identity record also holds values that the screen does not edit and the demo builder supplies: slug, header and footer (design numbers), cat, mark, font, services, stats, areas, cta_line and news_title. A colour field starts at #245c52 when the niche has no saved colour.
Niche design (Appearance, Niche design)
Stored in the post meta _lnl_design of the niche’s home page. It applies to all four editor versions of the niche.
| Field label | Key | Allowed values | Default |
|---|---|---|---|
| Presentation | style | Neighbourhood, Atelier, Dispatch, Enterprise, Clinical, Hospitality, Active, Wellness, Home care, Restoration | Neighbourhood |
| Content width | width | 1040 to 1320 px | 1200 |
| Corner radius | radius | 0 to 48 px | 16 |
| Desktop section spacing | spacing | 64 to 120 px | 96 |
Service Settings (Settings, Washlora Service)
| Option name | Label | Default | Used by |
|---|---|---|---|
laundryes_service_postcodes | Service postcodes / ZIP codes | Empty (the checker then asks the visitor to contact the team) | [laundryes_service_area_checker]. Separate codes by commas or lines |
laundryes_standard_turnaround | Standard turnaround | 24–48 hours | [laundryes_turnaround] |
laundryes_express_turnaround | Express turnaround | Same day / next day where available | [laundryes_turnaround] |
Washlora shopping (WooCommerce, Settings, Products, Washlora shopping)
Each option is a checkbox and is on by default.
| Option name | Label | Default | Effect |
|---|---|---|---|
lcx_choices | Service option buttons | Yes | Variation choices as buttons |
lcx_recent | Recently viewed services | Yes | Recently viewed list, kept in the visitor’s browser |
lcx_layout | Grid and list switching | Yes | Grid and list view switch |
lcx_addons | Related service add-ons | Yes | “Useful with this service” block built from cross-sells |
lcx_account | Customer account shortcuts | Yes | Shortcut cards on the My Account dashboard |
lcx_units | Price units | Yes | Prints _lcs_unit after prices |
Customizer settings (Appearance, Customize)
Stored as theme modifications.
| Section | Setting | Label | Default |
|---|---|---|---|
| Washlora Header | laundryes_topbar | Show top bar | On |
| Washlora Header | laundryes_phone | Phone | Empty |
| Washlora Header | laundryes_email | Empty | |
| Washlora Header | laundryes_cta_label | Header button label | Schedule Pickup |
| Washlora Header | laundryes_cta_url | Header button URL | Empty |
| Washlora Colors | laundryes_primary | Primary | #0a77ff |
| Washlora Colors | laundryes_secondary | Secondary | #28c7d9 |
| Washlora Colors | laundryes_footer_bg | Footer Bg | #0e1d31 |
| Washlora Colors | laundryes_footer_text_color | Footer Text Color | #c5d3e6 |
| Washlora Footer | laundryes_copyright_text | Copyright text | Empty |
| Washlora Footer | laundryes_address | Business address | Empty |
| Washlora Footer | laundryes_opening_hours | Opening hours | Empty |
| Washlora shop | laundryes_shop_heading | Shop heading | Empty |
| Washlora shop | laundryes_shop_intro | Shop introduction | Empty |
| Washlora shop | laundryes_shop_brand | Brand name | Washlora |
| Washlora shop | laundryes_shop_announcement | Header message | Everyday laundry. Specialist care. One place. |
| Washlora shop | laundryes_shop_footer_heading | Footer heading | A little less laundry. A little more living. |
| Washlora shop | laundryes_shop_footer_copy | Footer description | Thoughtful care for everyday essentials and specialist textiles. Choose a service, review the details and plan your next collection. |
| Washlora shop | laundryes_shop_accent | Shop accent | #164f44 |
The theme also registers the menu locations primary (Primary Menu), footer (Footer Menu), commerce (Shop navigation) and commerce_footer (Shop footer navigation), and the widget areas sidebar-1 (Blog Sidebar) and footer-1 to footer-4.
Washlora Options (Redux Framework)
The screen Washlora Options needs the Redux Framework plugin. All values are saved in the single option laundryes_options. The AI Theme Assistant and Design Studio write to the same option.
| Section | Keys and defaults |
|---|---|
| General | site_layout (wide), content_width (1280, range 960 to 1600), back_to_top (on), preloader (off) |
| Branding | logo, logo_dark, favicon, logo_width (180, range 60 to 360) |
| Colors | primary_color (#1d6fe8), secondary_color (#0f172a), accent_color (#f59e0b), body_bg (#ffffff), text_color (#334155) |
| Typography | body_font (Inter, 16px, line height 1.7), heading_font (Inter, weight 700) |
| Header & Menu | header_style (1, choices 1 to 12), sticky_header, mega_menu, menu_search, menu_cart (all on) |
| Footer | footer_style (1, choices 1 to 12), footer_widgets (4), copyright |
| Blog | blog_layout (grid, list or masonry), blog_sidebar (right, left or none), show_author, show_share (on) |
| Laundry | enable_booking, enable_pickup, enable_orders, enable_cart (all on), default_slider (revolution, smart, master, prime or serious) |
| Sliders | slider_style (1 to 5), slider_autoplay (on), slider_speed (7000, range 3000 to 12000) |
| Social | facebook, instagram, youtube, x_twitter, linkedin |
| Performance & Custom Code | lazy_images, reduce_motion (on), custom_css, custom_js |
primary_color, secondary_color, accent_color, body_bg, text_color, content_width and custom_css. The other keys are stored in the option, and no Washlora code reads them (the theme’s own header, footer and colours come from the Customizer and the niche identity). Check the result on your site before relying on a key.Options without a settings screen
These options are read by Washlora code. No screen edits them; set them with custom code or WP-CLI.
| Option name | Meaning | Default |
|---|---|---|
laundryes_rush_percent | Express care surcharge percentage, 0 to 100. At 0 the checkbox is not shown | 25 |
laundryes_blackout_dates | List of dates printed into the page footer as the JavaScript variable window.LaundryesBlackoutDates | Empty list |
laundryes_maintenance_mode | When true, visitors who cannot manage options get a 503 maintenance page | Off |
laundryes_maintenance_message | Text of the maintenance page | We are improving the site. Please check back soon. |
laundryes_404_page_id | Page whose content is shown on 404 errors | 0 (standard 404) |
laundryes_option | Washlora 1.x settings kept for compatibility. Keys read: main-color, main-color-2, background-footer, color-footer, logo, PhoneNo, Email, footer_text, address, openinghours | Empty |
State options written by the importers and tools
| Option name | Holds |
|---|---|
laundryes_niches | The installed niche records: home page ID, slug and name |
lnl_home_map | Page IDs of each niche’s three home layouts in each editor |
laundryes_adt_design_profiles | Layout, header, footer, menu and slider numbers per niche |
laundryes_inner_to_home | Map from inner pages to their niche home page |
laundryes_adt_menu_map, adt_niche_menu_map | Menu ID per niche |
laundryes_slider_media_map, laundryes_demo_card_media_map | Attachment IDs for niche sliders and demo cards |
laundryes_active_niche, laundryes_active_builder, laundryes_adt_import_result | Result of the last one-click demo import |
lni_contact_form, lni_last_result | Contact Form 7 form created by the niche importer, and the summary of the last import |
laundryes_builder_templates_seeded | Time the per-niche Elementor and Classic templates were created |
laundryes_demo_finalized_at | Time the demo finalizer last ran |
laundryes_adt_ai_log | The last 100 questions and answers of the AI Theme Assistant, with time and user ID |
laundryes_local_batch_<id> | Pages and menu created by one generator run, kept so the run can be undone |
Shortcodes and blocks
Shortcodes
Attribute defaults are the values used when an attribute is left out. Shortcodes that need WooCommerce return nothing, or a short notice, when it is not active.
| Shortcode | Attributes (default) | Output and requirements |
|---|---|---|
[laundryes_services], [laundryes_packages], [laundryes_testimonials], [laundryes_faqs] | limit (6), columns (3; limited to 1 to 4) | Card grid of the matching content type, ordered by menu order then date. On niche pages the services and packages are limited to the page’s niche. |
[laundryes_estimator] | wash_rate (2.50), shirts_rate (4.50), bedding_rate (12.00), pickup_rate (8.00) | Instant estimate calculator with a Schedule Pickup link. |
[laundryes_service_area_checker] | None | Postcode checker using the Service Settings list. |
[laundryes_turnaround] | None | Standard and express turnaround from Service Settings. |
[laundryes_booking_form] | niche (empty), title (Book Pickup & Delivery) | Request form that saves a Booking post. Fields: name, email, phone, service, pickup date and window, delivery date and window, address, care notes. No WooCommerce needed. |
[laundryes_booking], [laundryes_new_order] | niche (current niche) | Form that adds a chosen service, quantity, pickup and delivery date and time, address, phone and notes to the WooCommerce cart, then opens the cart. Requires WooCommerce. The pickup must be in the future and the delivery after the pickup; quantity 1 to 50. |
[laundryes_cart_summary] | None | Item count, total and Open Cart button. Requires WooCommerce. |
[laundryes_cart_panel] | None | Wraps the WooCommerce cart. Requires WooCommerce. |
[laundryes_delivery_tracker] | None | Lists the logged-in customer’s last 5 orders with status; asks visitors to sign in. Requires WooCommerce. |
[laundryes_order_tracker] | order (0; also read from the ?order= URL value) | Order status and pickup and delivery times, shown only to shop managers or the customer who owns the order. |
[laundryes_driver_status] | order (0) | Driver name, photo, phone and delivery status of an order. |
[laundryes_garment_tracker] | code (empty) | Status lookup by garment tag code. New random tags show the status only; older sequential tags need the order owner or a shop manager. |
[laundryes_price_calculator] | niche (empty) | Quantity calculator from WooCommerce product prices (up to 30 niche products, otherwise 12 products). |
[laundryes_branches] | count (12) | Branch cards with address, phone and hours. |
[laundryes_delivery_zones] | None | List of branches with zones and delivery fee (up to 50). |
[laundryes_postcode_checker] | None | Pickup availability checker built from branch postcodes. |
[laundryes_slot_selector] | date (accepted, not used for filtering) | Drop-down of up to 50 Pickup Slots that still have capacity. |
[laundryes_weight_pricing] | rate (2.5), minimum (10) | Weight-based price calculator in kilograms. |
[laundryes_recurring_pickup] | niche (current niche) | Form that saves a Recurring Pickup post. |
[laundryes_commercial_quote] | None | Form that saves a Commercial Quote post. |
[laundryes_subscription_control] | None | Logged-in customers pause or resume their own Recurring Pickup records. |
[laundryes_loyalty_dashboard] | None | Logged-in customer’s loyalty points. |
[laundryes_woocommerce_store], [laundryes_commerce_store] | niche (current niche, else all) | Commerce Studio shop: toolbar, search and filters, results and AJAX paging. Requires WooCommerce. |
[laundryes_niche_slider] | niche (current niche), title, subtitle, type (the niche’s style, 1 to 5) | Image slider built from the niche’s slider images. |
[laundryes_forum_index], [laundryes_community_hub], [laundryes_member_panel] | None | Community blocks. Require bbPress (forum index), BuddyPress (community hub) and WooCommerce or Easy Digital Downloads (member panel links). |
[laundryes_digital_store] | number (8), columns (4) | Easy Digital Downloads list. Requires Easy Digital Downloads. |
[laundryes_demo_library] | None | The demo collection showcase page, with the public generator planning demo. |
[adt_niche_header], [adt_niche_footer] | niche, index, name (read from the page when empty) | Niche header and footer for generated pages. |
[laundry_section] | eyebrow, title, body, button, url, anchor (empty); image, image2 (0); layout (cards); tone (light; soft or dark); cards (list of titles and texts); function, parameters (empty) | Native section from Washlora Native Layouts (WPBakery uses it). layout accepts 59 values, from hero-split and cards to the niche- layouts and function. With function a section embeds another Washlora, WooCommerce, Contact Form 7, bbPress, BuddyPress or Easy Digital Downloads shortcode. |
[laundry_classic_sections] | None | Outputs the saved sections of a Classic Editor page. Keep it in the page’s main content. |
Washlora 1.x aliases. For old WPBakery content, Core registers these tags when nothing else uses them: latestPost, latest_post_home_page, themepath, faqs, work_info, about_section, title, about_section_2, fact_section, testimonial, packeges_list, detail_pricing, service_section, stat_client, stat_client2 and faq_item. They accept title, subtitle, text, title1 to title3, subtitle1 to subtitle3 and text1 to text3. service_section, testimonial, packeges_list, detail_pricing and faqs map to the card shortcodes (6, 3, 3, 3 and 6 items).
Gutenberg blocks and patterns
| Block | Renders | Attributes |
|---|---|---|
laundry/section | A native section (Washlora Native Layouts) | eyebrow, title, body, button, url, layout, tone, function, parameters, anchor, image, image2, items |
laundryes/booking | [laundryes_booking_form] | Passes through any scalar attribute |
laundryes/delivery-tracker | [laundryes_delivery_tracker] | Passes through any scalar attribute |
laundryes/new-order | [laundryes_new_order] | Passes through any scalar attribute |
laundryes/cart | [laundryes_cart_panel] | Passes through any scalar attribute |
laundryes/estimator | [laundryes_estimator] | Passes through any scalar attribute |
laundryes/niche-slider | [laundryes_niche_slider] | niche, type, title |
laundryes/cart-summary | [laundryes_cart_summary] | niche, type, title |
There are 8 Washlora blocks in total. The pattern category Washlora (laundryes) holds 319 patterns: 4 section patterns (laundryes/services-grid, pricing-grid, testimonials-grid, faq-grid), one home pattern per installed niche (laundryes/niche-<slug>, 105 here) and two further home layouts per niche (-home-2 and -home-3, 210 here).
Elementor widgets and WPBakery elements
| Builder | Count | Names |
|---|---|---|
| Elementor | 15 | laundry-native-section; laundryes-services, laundryes-packages, laundryes-testimonials, laundryes-faqs (Items and Columns controls); laundryes-booking, laundryes-delivery, laundryes-new-order, laundryes-cart, laundryes-estimator-widget; laundryes-adt-slider, laundryes-adt-booking, laundryes-adt-new-order, laundryes-adt-cart, laundryes-adt-tracker |
| WPBakery | 13 | Base tags laundry_section (category Washlora); laundryes_services, laundryes_packages, laundryes_testimonials, laundryes_faqs, laundryes_booking_form, laundryes_delivery_tracker, laundryes_new_order, laundryes_cart_panel, laundryes_estimator, laundryes_niche_slider, laundryes_booking, laundryes_cart_summary (category Washlora) |
WPBakery also lists one default template per niche, named “Washlora: <niche name>”.
Admin screens and capabilities
| Screen | Menu location | Slug (page=) | Recurso |
|---|---|---|---|
| Niche identity | Appearance | lnl-identity | edit_theme_options |
| Niche design | Appearance | lnl-design | edit_theme_options |
| Import a niche | Appearance | laundry-niche-import | manage_options (the import also needs import) |
| Import Washlora Demo (one-click demo) | Appearance | laundryes-adt-import | edit_theme_options |
| Demo Setup | Appearance | laundryes-demo-setup | manage_options. When the niche catalogue is present it shows the Import a niche form |
| Washlora Setup | Appearance | laundryes-setup | manage_options |
| Washlora Service | Settings | laundryes-service-settings | manage_options |
| Washlora AI Studio, AI Website Generator | Top-level menu, position 57 | laundryes-ai-studio | edit_theme_options (generation also needs edit_pages) |
| AI Theme Assistant | Washlora AI Studio | laundryes-ai-assistant | edit_theme_options |
| Design Studio | Washlora AI Studio | laundryes-design-studio | edit_theme_options |
| Washlora Options | Top-level menu, position 58 (needs Redux Framework) | laundryes_options_options | manage_options |
| Washlora shopping | WooCommerce, Settings, Products | wc-settings&tab=products§ion=laundry_experience | WooCommerce settings capability |
| Washlora Header, Colors, Footer and Washlora shop | Appearance, Customize | Customizer sections | edit_theme_options |
| Content type lists | Top-level menus (Services, Pricing Packages, Testimonials, FAQs, Branches, Bookings, Pickup Slots, Garment Items, Delivery Routes, Drivers, Commercial Quotes, Recurring Pickups, Popups); Classic Templates under Services | edit.php?post_type=<slug> | edit_posts |
The AI Studio pages are the AI Website Generator, a template-based tool (no AI service is called), the AI Theme Assistant, a rule-based helper, and the Design Studio, a form that writes colours and header and footer numbers to the laundryes_options option. The Assistant understands commands such as “set primary color to #2563eb”, “set header style 4”, “enable sticky header” and “site title to …”, and it can change the site title.
AJAX actions, form handlers and REST
Washlora registers no custom REST routes. The content types marked REST in the first table (Services, Pricing Packages, Testimonials, FAQs and Branches) appear in the standard WordPress REST API, published items only. Custom meta is not registered for REST.
| Action or handler | Nonce | Who may call it | Finalidade |
|---|---|---|---|
lcs_public (admin-ajax.php, GET parameter mode) | None | Public (logged in and logged out) | Read-only shop data. mode=catalog returns filtered shop results, mode=products returns details of up to 30 visible published products by ID, mode=cart returns the mini-cart. Other modes return an error. |
laundryes_generator_demo | laundryes_generator_demo (field nonce) | Public (logged in and logged out) | Planning preview used on the demo showcase. It returns a plan and creates nothing. |
laundryes_local_plan | laundryes_local_generator (field nonce) | edit_theme_options and edit_pages | Builds a website plan from a brief and stores it for 30 minutes. |
laundryes_local_build | Same | Same, and the plan owner only | Creates draft pages and a menu from a stored plan. A plan can be used once. |
laundryes_local_undo | Same | Same, and the batch owner only | Moves the batch’s draft pages to the trash and deletes its menu; it stops if a page was published. |
laundryes_adt_ai_chat | laundryes_adt_ai_nonce | edit_theme_options | AI Theme Assistant questions and commands. |
laundryes_adt_design_save | Same | edit_theme_options | Saves Design Studio values to laundryes_options. |
laundryes_adt_ai_generate | Same | edit_theme_options | Retired. It only returns a message to use the Website Generator. |
admin-post.php?action=laundryes_adt_import | laundryes_adt_import | edit_theme_options | One-click demo import form. |
| Form post: booking form | laundryes_booking | Public | Saves a Booking post. |
| Form post: cart booking form | laundryes_adt_booking | Public | Validates and adds the service to the WooCommerce cart. |
| Form post: recurring pickup, commercial quote | laundry_recurring, laundry_quote | Public | Saves a Recurring Pickup or Commercial Quote post. |
| Form post: trackers | laundryes_track, laundryes_track_garment | Public | Order lookup (needs the billing email) and garment lookup. |
| Form post: subscription control, express care | laundry_sub, laundryes_rush_<product ID> | Logged-in customer for the first; public for the second | Pause or resume a recurring pickup you own; add the express care option to the cart. |
The public forms are protected by a nonce only. The code contains no CAPTCHA, honeypot or rate limiting, so add spam protection if you publish them.
Hooks and filters for developers
These are the extension points that Washlora defines itself. Everything else is standard WordPress and WooCommerce hooks.
| Name | Type | Arquivo | O que faz |
|---|---|---|---|
laundryes_commerce_assets_needed | Filter (default false, post ID) | laundryes-core/commerce-studio.php | Return true to load the Commerce Studio styles and scripts on a page that does not contain a shop shortcode. |
laundryes_show_page_title | Filter | laundryes/inc/template-functions.php | Decide whether the theme prints the page title. |
laundryes_content_width | Filter (default 1280) | laundryes/functions.php | Sets the global $content_width. |
laundryes_showcase_footer_rendered | Action | laundryes-core/adt-showcase-footer.php | Runs after the demo showcase footer. |
Helper functions you can call from a child theme or companion plugin:
| Function | Finalidade |
|---|---|
laundryes_route_assign( $order_id, $driver_id = 0, $route_id = 0 ) | Stores the driver and route on a WooCommerce order. |
laundryes_loyalty_points( $user_id = 0 ), laundryes_award_points( $order_id ) | Read a user’s points; add points for a completed order. |
laundryes_identity() | Identity array of the niche for the current page, or an empty array. |
laundryes_core_niche_records() | The installed niche records (laundryes_niches). |
laundryes_lni_import( $slug, $media = true, $front = false, $only_editors = null ) | Imports one niche; needs manage_options and import. |
lnl_clean( $attrs ), lnl_render( $attrs ) | Sanitise and render one native section. |
Template files and page templates
Page templates
Choose them in the page editor under Template.
| Template name | Arquivo |
|---|---|
| Home | home-page.php |
| About | about-page.php |
| Pricing | pricing.php |
| Contact | contact.php |
| Faqs | faqs-page.php |
| Blog | blog-page.php |
Other theme files
| Arquivo | Finalidade |
|---|---|
header.php, footer.php, sidebar.php | Shell. The header and footer switch to the niche or shop shell when a niche identity or the shop context applies. |
index.php, page.php, single.php, archive.php, search.php, 404.php, comments.php | Standard WordPress templates. single.php is the Blog Details template and includes share links. |
single-laundry_service.php | Laundry Service detail page. |
archive-laundry_service.php | Template for the Laundry Service archive. Note that the Services type is registered without an archive, so this file applies only if you enable has_archive in custom code. |
woocommerce.php | WooCommerce wrapper; prints the Customizer shop heading and introduction. |
template-parts/content.php | Post summary used by lists. |
inc/ | commerce-shell.php, demo-nav.php, local-fonts.php, mega-menu.php, niche-identity.php, niche-menu.php, performance.php, plugin-onboarding.php, style-presets.php, template-functions.php |
rtl.css, languages/laundryes.pot, assets/ | Right-to-left styles, translation template, and stylesheets, script and the bundled Inter font files. |
The plugins add no theme template files; their output comes from shortcodes, blocks, widgets and the filter on the page content.
Scheduled events, transients, cookies and browser storage
| Item | Type | Details |
|---|---|---|
| Scheduled events | WP-Cron | None. Washlora schedules no cron events. |
laundryes_local_plan_<id> | Transient, 30 minutes | A generator plan waiting to be built. |
lni_import_lock | Option used as a lock | Blocks a second niche import while one is running; a lock older than 15 minutes is replaced. |
laundryes_local_lock_<token> | Option used as a lock | Stops a generator plan from being built twice. |
| Template seeder | Admin request | On an admin page load, if laundryes_niche_count is set and laundryes_builder_templates_seeded is not, the per-niche Elementor and Classic templates are created once. |
| Rewrite rules | Plugin activation and deactivation | Washlora Core flushes them on both. |
laundryes_consent | Cookie, 1 year | Set to essential or all when a visitor answers the privacy banner. |
laundryes_popup_<popup ID> | Cookie, 7 days | Set when a visitor closes the popup. |
laundry-commerce-*, laundry-experience-* | Browser localStorage | Saved services, comparison list and recently viewed services, kept in the visitor’s browser only. |
Data and privacy
What customer records contain
| Record | Stored in | Personal data held | Who can see it |
|---|---|---|---|
Booking request ([laundryes_booking_form]) | Booking post and post meta | Name (also in the title), email, phone, address, care notes, service, dates and windows | Users with access to the Bookings screen; the record has no meta box, so view it with a Custom Fields or database tool |
Cart booking ([laundryes_booking]) | WooCommerce order line item meta, plus a Booking post titled “Order #N booking” | Address, phone, notes, pickup and delivery dates and times; the customer’s name and email stay in the WooCommerce order | Shop managers; the customer in their own account |
| Checkout fields | WooCommerce order meta | Preferred pickup date and window, care preference, care instructions (laundryes/pickup-date, laundryes/pickup-window, laundryes/care-preference, laundryes/special-instructions) | Shop managers; the customer |
| Commercial quote | Commercial Quote post and post meta | Company name (title), email, volume, requirements | Users with access to the Commercial Quotes screen |
| Recurring pickup request | Recurring Pickup post and post meta | Name (title), email, address, frequency, niche | Users with access to the Recurring Pickups screen |
| Garment tags | Garment Item posts | Random tag code, order and item IDs, status. No name or address | Anyone who holds the tag code can see its status |
| Loyalty points | User meta | A point balance | The customer; administrators |
| AI Theme Assistant log | Option laundryes_adt_ai_log | Administrator questions, with the user ID, last 100 entries | Administrators |
- No email is sent by Washlora. The theme and both plugins contain no mail call, so booking, quote and recurring pickup requests are stored but not emailed. WooCommerce sends its own order emails. Check the Bookings, Commercial Quotes and Recurring Pickups lists regularly, or add your own notification.
- No external service is called by default. A search of the theme and both plugins found no outbound HTTP request, no remote API and no external script or font. The theme bundles the Inter font, strips Google Fonts connections from the Redux font stylesheet, and the website generator and AI Theme Assistant run on your own site without an API key.
- Exceptions you control. The niche importer downloads demo images when Download demo images is ticked (this needs internet access from your server). The share buttons in Blog Details and the ThemeForest links on the demo showcase are ordinary links that only open when clicked. WooCommerce, payment gateways, Contact Form 7, sliders, builders and Redux Framework are separate plugins with their own behaviour.
- No export, erase or uninstall routines. Washlora registers no WordPress personal data exporter or eraser and does not remove its posts or options when the plugin is deleted. Delete requests, bookings and garment records yourself when you must erase them, and add them to your privacy policy.
- Privacy banner. The banner records only the visitor’s choice in a cookie and links to your WordPress privacy policy page if one is set. It does not block any script by itself.