get_settings(); // $_GET['tab'] selects which settings tab to display — read-only, no state // change. Saving settings POSTs to BoxCart_Admin_Settings with its own nonce. $current_tab = isset( $_GET['tab'] ) ? sanitize_key( $_GET['tab'] ) : 'general'; // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Read-only tab selector; capability-gated above. // Define tabs. $boxcart_tabs = array( 'general' => __( 'General', 'boxcart' ), 'collection' => __( 'Collection', 'boxcart' ), 'orders' => __( 'Orders', 'boxcart' ), 'customer' => __( 'Accounts', 'boxcart' ), 'emails' => __( 'Emails', 'boxcart' ), 'styling' => __( 'Styling', 'boxcart' ), 'sidecart' => __( 'Sidecart', 'boxcart' ), 'shortcodes' => __( 'Shortcodes', 'boxcart' ), 'misc' => __( 'Misc', 'boxcart' ), ); // Insert Payments tab only when pricing is enabled. if ( BoxCart_Helpers::prices_enabled() ) { // Insert after 'orders' to maintain original tab order. $position = array_search( 'orders', array_keys( $boxcart_tabs ), true ); $boxcart_tabs = array_slice( $boxcart_tabs, 0, $position + 1, true ) + array( 'payments' => __( 'Payments', 'boxcart' ) ) + array_slice( $boxcart_tabs, $position + 1, null, true ); } // Check for notices (informational flag set by the save handler on redirect). $saved = isset( $_GET['saved'] ) ? true : false; // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Read-only success-notice flag; capability-gated above. // Get pages for dropdown. $boxcart_pages = $settings_handler->get_pages_dropdown(); // Check if current tab has a form (shortcodes doesn't). $has_form = 'shortcodes' !== $current_tab; // Check if the auto-save notice has been dismissed by this user. $show_autosave_notice = ! get_user_meta( get_current_user_id(), 'boxcart_dismissed_autosave_notice', true ); ?>

*/ ?>

%


inc. VAT', '+ VAT' ); ?>

General).', 'boxcart' ); ?>

array( 'label' => __( 'Pending', 'boxcart' ), 'description' => __( 'Order received, awaiting confirmation or review.', 'boxcart' ), 'required' => false, ), 'processing' => array( 'label' => __( 'Processing', 'boxcart' ), 'description' => __( 'Order is being prepared.', 'boxcart' ), 'required' => false, ), 'ready' => array( 'label' => __( 'Ready', 'boxcart' ), 'description' => __( 'Order is ready for collection.', 'boxcart' ), 'required' => false, ), 'completed' => array( 'label' => __( 'Completed', 'boxcart' ), 'description' => __( 'Order has been collected.', 'boxcart' ), 'required' => true, ), 'cancelled' => array( 'label' => __( 'Cancelled', 'boxcart' ), 'description' => __( 'Order was cancelled.', 'boxcart' ), 'required' => true, ), ); // Get enabled statuses (default all enabled). $enabled_statuses = isset( $settings['order_enabled_statuses'] ) ? $settings['order_enabled_statuses'] : array_keys( $workflow_statuses ); // Determine which statuses are valid for default order status. $default_status_options = array( 'pending' => __( 'Pending (awaiting review)', 'boxcart' ), 'processing' => __( 'Processing (skip Pending)', 'boxcart' ), ); $current_default = isset( $settings['order_default_status'] ) ? $settings['order_default_status'] : 'pending'; ?>
$status_label ) : ?>


$status_data ) : ?>

'boxcart_product_category', 'hide_empty' => false, 'orderby' => 'name', 'order' => 'ASC', ) ); // Build ordered list: saved order first, then any new categories. $ordered_categories = array(); if ( ! empty( $saved_category_order ) && ! empty( $all_categories ) && ! is_wp_error( $all_categories ) ) { $cat_map = array(); foreach ( $all_categories as $boxcart_cat ) { $cat_map[ $boxcart_cat->term_id ] = $boxcart_cat; } // Add categories in saved order. foreach ( $saved_category_order as $term_id ) { if ( isset( $cat_map[ $term_id ] ) ) { $ordered_categories[] = $cat_map[ $term_id ]; unset( $cat_map[ $term_id ] ); } } // Append any remaining (new) categories. foreach ( $cat_map as $boxcart_cat ) { $ordered_categories[] = $boxcart_cat; } } elseif ( ! empty( $all_categories ) && ! is_wp_error( $all_categories ) ) { $ordered_categories = $all_categories; } ?>

  • name ); ?>

'max-width: 200px; height: auto;' ) ); ?>

__( 'Order Confirmation', 'boxcart' ), 'new_order_admin' => __( 'New Order (Admin)', 'boxcart' ), 'status_processing' => __( 'Status: Preparing', 'boxcart' ), 'status_ready' => __( 'Status: Ready for Collection', 'boxcart' ), 'status_completed' => __( 'Status: Completed', 'boxcart' ), 'status_cancelled' => __( 'Status: Cancelled', 'boxcart' ), 'order_modified' => __( 'Order Modified', 'boxcart' ), 'order_modified_admin' => __( 'Order Modified (Admin)', 'boxcart' ), 'order_message_to_customer' => __( 'Message to Customer', 'boxcart' ), 'order_message_to_admin' => __( 'Customer Message (Admin)', 'boxcart' ), ); $template_descriptions = array( 'order_confirmation' => __( 'Sent to customers when they place an order.', 'boxcart' ), 'new_order_admin' => __( 'Sent to admin when a new order is placed.', 'boxcart' ), 'status_processing' => __( 'Sent when order status changes to "Preparing".', 'boxcart' ), 'status_ready' => __( 'Sent when order is ready for collection.', 'boxcart' ), 'status_completed' => __( 'Sent when order has been collected.', 'boxcart' ), 'status_cancelled' => __( 'Sent when order is cancelled.', 'boxcart' ), 'order_modified' => __( 'Sent to customers when their order is modified.', 'boxcart' ), 'order_modified_admin' => __( 'Sent to admin when a customer modifies their order.', 'boxcart' ), 'order_message_to_customer' => __( 'Sent to customers when admin sends a message about their order.', 'boxcart' ), 'order_message_to_admin' => __( 'Sent to admin when a customer replies to an order message.', 'boxcart' ), ); ?>

' . esc_html( $tpl_format_label ) . '' ); ?>

$description ) : ?>
$defaults ) : $saved = isset( $saved_templates[ $template_key ] ) ? $saved_templates[ $template_key ] : array(); $template = wp_parse_args( $saved, $defaults ); $label = isset( $template_labels[ $template_key ] ) ? $template_labels[ $template_key ] : $template_key; $desc = isset( $template_descriptions[ $template_key ] ) ? $template_descriptions[ $template_key ] : ''; ?>


%

px
px
px
px
%
Out of Stock

array( 'label' => __( 'Defaults', 'boxcart' ), 'fonts' => array( 'theme' => __( 'Theme Default', 'boxcart' ), 'system' => __( 'System UI', 'boxcart' ), ), ), 'google' => array( 'label' => __( 'Google Fonts (Self-Hosted)', 'boxcart' ), 'fonts' => array( 'roboto' => 'Roboto', 'open-sans' => 'Open Sans', 'lato' => 'Lato', 'montserrat' => 'Montserrat', 'poppins' => 'Poppins', 'inter' => 'Inter', 'raleway' => 'Raleway', 'nunito' => 'Nunito', 'playfair' => 'Playfair Display', 'merriweather' => 'Merriweather', ), ), ); ?> __( 'Regular (400)', 'boxcart' ), '500' => __( 'Medium (500)', 'boxcart' ), '600' => __( 'Semi-Bold (600)', 'boxcart' ), '700' => __( 'Bold (700)', 'boxcart' ), ); ?>

px

Your Collection

Fresh sourdough, pastries and artisan bread — order ahead for collection from our bakery. Available Wednesday to Sunday.

Sourdough Loaf £3.50

1 × Each £2.50
%

✓ Added to basket
✗ Something went wrong
⚠ Price has changed
ℹ Item updated

Each Pack of 6
px

− 1 Each +
px

1 × Each £2.50
px

%

__( 'Products page', 'boxcart' ), 'basket' => __( 'Basket page', 'boxcart' ), 'checkout' => __( 'Checkout page', 'boxcart' ), 'account' => __( 'Account page', 'boxcart' ), ); foreach ( $page_options as $page_key => $page_label ) : ?>





Your Basket (3)
Sourdough Loaf £3.50 − 1 + Remove
Organic Milk £1.80 − 2 + Remove
Farm Eggs £2.90 − 1 + Remove


__( 'Cart', 'boxcart' ), 'bag' => __( 'Bag', 'boxcart' ), 'basket' => __( 'Basket', 'boxcart' ), 'tote' => __( 'Tote', 'boxcart' ), 'custom' => __( 'Custom', 'boxcart' ), ); ?>
$label ) : ?>
'max-width: 48px; height: auto;' ) ); ?>

If your SVG has fixed colours or sizing, use SVG Cleaner to strip them so the icon inherits the button styles.', 'boxcart' ), array( 'a' => array( 'href' => array(), 'target' => array(), 'rel' => array(), ), 'br' => array(), ) ); ?>


3 items


3
3 items £10.00
View Basket

Your Basket (3)
Sourdough Loaf Qty: 1
£3.50
Organic Milk Qty: 2
£1.80



1

2

3

4

5

<?php echo do_shortcode( '[boxcart_mini_basket]' ); ?>

get_shortcodes() as $shortcode ) : ?>

    $attr_desc ) : ?>
  • —

'boxcart_product_category', 'hide_empty' => false, ) ); ?>

[boxcart_products]
get_resettable_tabs(); ?>

$tab_label ) : ?>