Крюк для поддержки конечной точки оплаты заказа Woocommerce для любого пользовательского типа сообщения - PullRequest
0 голосов
/ 08 июля 2019

Я создал пользовательский тип записи для поддержки проверки woocommerce. Он работает нормально, так же, как шорткод [woocommerce_checkout] работает с любым сообщением в блоге.

Проблема с конечной точкой оплаты заказа. После нажатия «Перейти к оформлению заказа» он будет перенаправлен на страницу оформления заказа по умолчанию в woocommerce.

WooCommerce поддерживает конечные точки для типа записи "страница". Я ищу зацепку, чтобы изменить тип сообщения на любой пользовательский тип сообщения.

$ wp-> query_vars ['order-pay'] не установлен и поэтому выдает 404. Попытка установить параметр запроса путем временного редактирования parse_request () в ядре не помогла.

add_filter( 'woocommerce_get_checkout_payment_url', 'changeUrl',10,2); 
   function changeUrl($pay_url, $obj ){

    $default_checkout = wc_get_page_permalink( 'checkout' );
    $order_id = $obj->get_id();
    // this is my checkout page saved in order meta previously
    $checkout_id = get_post_meta($order_id,"_my_custom_checkout_id",true);
    $new_permalink = get_permalink($checkout_id);

    $pay_url = str_replace($default_checkout, $new_permalink,$pay_url);
    return $pay_url;

}

http://localhost/my-checkout-page/order-pay/1456/?pay_for_order=true&key=wc_order_q0MfApcZqn6Qt

URL этой пользовательской страницы оформления заказа выдает 404

Рабочий URL (по умолчанию страница оформления заказа):

http://localhost/checkout/order-pay/1456/?pay_for_order=true&key=wc_order_q0MfApcZqn6Qt

...