You've already forked wc-bootstrap
- Override WooCommerce's .input-text background (specificity 0,3,1) with [data-bs-theme="dark"] selector for text inputs and textareas - Remove table-light from <thead> in cart, review-order, orders, and payment-methods templates (forces white in dark mode) - Add .alert.woocommerce-* compound selectors for notice overrides outside .woocommerce wrapper ancestry - Suppress focus ring on programmatically focused notices (woocommerce.js focus_populate_live_region adds tabindex + focus) - Wrap order-details product table in card matching thank-you page style - Fix thank-you alert icon/text line wrap with d-flex align-items-center - Bump version to 0.1.2 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
93 lines
3.6 KiB
Twig
93 lines
3.6 KiB
Twig
{#
|
|
# Order Details (Bootstrap 5 Override)
|
|
#
|
|
# Renders the full order details table with items, totals, and customer info.
|
|
# HPOS compatible: uses WC_Order methods only.
|
|
#
|
|
# Expected context:
|
|
# order_id - Order ID
|
|
# show_downloads - Whether to show downloads table
|
|
#
|
|
# WooCommerce PHP equivalent: order/order-details.php
|
|
#
|
|
# @package WcBootstrap
|
|
# @since 0.1.0
|
|
#}
|
|
|
|
{% set order = wc_get_order(order_id) %}
|
|
|
|
{% if order %}
|
|
{% set order_items = order.get_items(apply_filters('woocommerce_purchase_order_item_types', 'line_item')) %}
|
|
{% set show_purchase_note = order.has_status(apply_filters('woocommerce_purchase_note_order_statuses', ['completed', 'processing'])) %}
|
|
{% set show_customer_details = order.get_user_id() == get_current_user_id() %}
|
|
|
|
{% if show_downloads is defined and show_downloads %}
|
|
{% set downloads = order.get_downloadable_items() %}
|
|
{% if downloads is not empty %}
|
|
{{ wc_get_template('order/order-downloads.php', { downloads: downloads, show_title: true }) }}
|
|
{% endif %}
|
|
{% endif %}
|
|
|
|
<section class="woocommerce-order-details">
|
|
{{ do_action('woocommerce_order_details_before_order_table', order) }}
|
|
|
|
<div class="card shadow-sm mb-4">
|
|
<div class="card-header">
|
|
<h2 class="h5 mb-0">{{ __('Order details') }}</h2>
|
|
</div>
|
|
<div class="table-responsive">
|
|
<table class="table table-hover align-middle mb-0">
|
|
<thead>
|
|
<tr>
|
|
<th>{{ __('Product') }}</th>
|
|
<th class="text-end">{{ __('Total') }}</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tbody>
|
|
{{ do_action('woocommerce_order_details_before_order_table_items', order) }}
|
|
|
|
{% for item_id, item in order_items %}
|
|
{% set product = item.get_product() %}
|
|
{% include 'order/order-details-item.html.twig' with {
|
|
order: order,
|
|
item_id: item_id,
|
|
item: item,
|
|
show_purchase_note: show_purchase_note,
|
|
purchase_note: product ? product.get_purchase_note() : '',
|
|
product: product
|
|
} %}
|
|
{% endfor %}
|
|
|
|
{{ do_action('woocommerce_order_details_after_order_table_items', order) }}
|
|
</tbody>
|
|
|
|
<tfoot>
|
|
{% for key, total in order.get_order_item_totals() %}
|
|
<tr>
|
|
<th scope="row">{{ total.label|esc_html }}</th>
|
|
<td class="text-end">{{ total.value|wp_kses_post }}</td>
|
|
</tr>
|
|
{% endfor %}
|
|
|
|
{% if order.get_customer_note() %}
|
|
<tr>
|
|
<th>{{ __('Note:') }}</th>
|
|
<td class="text-end">{{ order.get_customer_note()|esc_html|nl2br }}</td>
|
|
</tr>
|
|
{% endif %}
|
|
</tfoot>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
{{ do_action('woocommerce_order_details_after_order_table', order) }}
|
|
</section>
|
|
|
|
{{ do_action('woocommerce_after_order_details', order) }}
|
|
|
|
{% if show_customer_details %}
|
|
{% include 'order/order-details-customer.html.twig' with { order: order } %}
|
|
{% endif %}
|
|
{% endif %}
|