برخی از افزونه ها مانند پرداخت “واریز” و “اشتراک” برای تکمیل سفارش WooCommerce در انتظار ، مشتریان را به صفحه “پرداخت برای سفارش” می فرستند. در موارد خاص ، مشتری نیز مجبور به ورود به سیستم می شود و این واقعاً بر نرخ تبدیل فروش تأثیر می گذارد – به جای فرم تسویه حساب ، مشتریان این اعلان را مشاهده می کنند: “لطفاً برای ادامه فرم پرداخت به حساب خود وارد شوید”.

در اینجا یک قطعه سریع آورده شده است تا مطمئن شوید مشتریان در صفحه “پرداخت برای سفارش” مجبور نیستند وارد سیستم شوند تا بتوانند بلافاصله پرداخت را انجام دهند. عملکرد WooCommerce مورد بحث wc_customer_has_capability است ، و خوشبختانه ما می توانیم این را با فیلتر user_has_cap نادیده بگیریم. لذت بردن!
add_filter( 'user_has_cap', 'ej_order_pay_without_login', 9999, 3 );
function ej_order_pay_without_login( $allcaps, $caps, $args ) {
if ( isset( $caps[0], $_GET['key'] ) ) {
if ( $caps[0] == 'pay_for_order' ) {
$order_id = isset( $args[2] ) ? $args[2] : null;
$order = wc_get_order( $order_id );
if ( $order ) {
$allcaps['pay_for_order'] = true;
}
}
}
return $allcaps;
}