na stronie internetowej WordPress działa woocommerce, użytkownik może zalogować się w jego (domyślnie) Obszar osobisty i wyświetlać informacje, takie jak:woocommerce zamówienie klienta szczegółowo w BS modalne
- Zamówienia historii
- Pobierz
- Adresy
- Edytuj informacje
- Wyloguj
Na karcie orders
, tabela prezentuje domyślnie pokazuje listę wszystkich zleceń, z View
przycisk, który przekierowuje do pełnej stronie szczegółów tej kolejności.
Co próbuję zrobić, to pokazać ten widok tabeli w oknie modalnym.
nie mam żadnych problemów w pokazujący modal z adresem URL docelowej załadowanego w nim. Prawdziwy problem polega na tym, że docelowy adres URL jest adresem całej strony, która wygląda tak, jak w przypadku i nie jest tym, czego chcę.
Myślę, że jest jakiś skrót pozwalający załadować tylko ten stół, czy może jakaś funkcja woocommerce, taka jak load_order_content_by_id($id)
?
Czy ktoś może wskazać mi właściwy kierunek?
Dzięki
=== SOLVED ===
Dzięki Raunak Gupta za wskazanie mi właściwej funkcji. zastąpić szablon orders.php dodał modalne okno html i edytowane :
'view' => array(
'url' => 'javascript:;',
'data' => [
'order-number' => $order->get_order_number()
],
'name' => __('View', 'woocommerce')
),
i na tym samym pliku:
foreach ($actions as $key => $action) {
echo '<a href="' . esc_url($action['url']) . '" class="button ' . sanitize_html_class($key) . '"';
if(isset($action['data']) && is_array($action['data'])){
foreach($action['data'] AS $data_attr=>$data_value){
echo 'data-' . sanitize_html_class($data_attr) .'="' .esc_html($data_value) . '" ';
}
}
echo '>' . esc_html($action['name']) . '</a>';
}
Trochę JS
$('.woocommerce-MyAccount-orders .button.view').on('click', function(e){
e.preventDefault();
var data = {};
data.action = 'modal_order';
data.order_number = $(this).data('order-number');
$.get(ajax_script.ajax_url, data, function(response) {
$('#modalOrderDetail').modal('show').find('.modal-body').html(response);
});
});
i zahaczony wordpress przez function.php
function modal_order() {
if(is_user_logged_in()) {
$order_number = $_GET['order_number'];
woocommerce_order_details_table($order_number);
}
}
add_action('wp_ajax_modal_order', 'modal_order');
add_action('wp_ajax_nopriv_modal_order', 'modal_order');
Nie wiem woocommerce, ale twoje pytanie wydaje się bardzo niejasne. Spróbuj dodać więcej szczegółów (być może [https://jsfiddle.net/](https://jsfiddle.net/)) i możesz uzyskać więcej odpowiedzi. –
Zrobiłabym skrzypce, gdyby tylko można było załadować w nim wordpress :) Spróbuję wyjaśnić mój post – Yuri
Jeśli ktoś czuje potrzebę downwingu, przynajmniej dodaj wyjaśnienie dla niego – Yuri