でWooCommerceの顧客の注文の詳細、ユーザーが自分の(デフォルト)パーソナルエリアにログインし、同じような情報を表示することができます。WooCommerceを実行しているWordPressのウェブサイトでBSモーダル
- 注文履歴
- ダウンロード
- アドレス
- 編集情報
- ログアウト
orders
タブには、デフォルトで表が表示され、すべての注文のリストが表示され、View
ボタンがその注文の完全な詳細ページにリダイレクトされます。
私がしようとしているのは、そのテーブルビューをモーダルウィンドウで表示することです。
ターゲットURLをロードしてモーダルを表示する際に問題はありません。 実際の問題は、ターゲットURLがのように表示されている全ページのURLであり、私が望むものではないということです。
ちょうどそのテーブルをロードすることを許可するショートコードがあると思うか、またはおそらくload_order_content_by_id($id)
のようないくつかのwoocommerce関数がありますか?
誰かが正しい方向に向けることができますか?
おかげ
=== ===に正しい関数に私を指しているためラウナクグプタに
感謝を解決しました。 私は、orders.phpテンプレートを上書きするモーダルウィンドウのhtmlを追加し、編集:
'view' => array(
'url' => 'javascript:;',
'data' => [
'order-number' => $order->get_order_number()
],
'name' => __('View', 'woocommerce')
),
と同じファイル上:
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>';
}
少し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);
});
});
とワードプレスにフックby 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');
私はwoocommerceを知らないが、あなたの質問は非常に曖昧であるようだ。詳細(おそらく[https://jsfiddle.net/](https://jsfiddle.net/))を追加しようとすると、さらに反応が出る可能性があります。 –
私はそれにwordpressをロードすることが可能だった場合、私はフィドルを作るだろう:)私は自分の投稿を明確にしようとする – Yuri
誰かがdownvotingの必要性を感じたら、少なくとも、それのexplainationを追加 – Yuri