0

WordPress能否实现不登陆付款功能?就是游客可以直接付款。wordpress+woocommerce已经装好,但是发现不论这么设置都实现不了这个功能,到付款页面后要求必须注册。

撰写回答

无意义的回答将很快被删除,账号将被禁止发言。 提交回答

2 个回答

WordPress日记
超哥
行业大佬
行业大佬
时间: 2023年04月20日

在后台-woocommerce-设置-账户和隐私中是否勾选了“允许客户在没有帐户的情况下下单”呢?如果勾选了还不行,有可能是你使用的支付插件强制需要登录状态下才能下单付款

WordPress日记
超哥
行业大佬
行业大佬
时间: 2023年04月19日

这个是需要使用代码,通过woocommerce的钩子进行实现的,你可以试着把下面代码放到你主题的functions.php中,因为我没有测试,所以只能你自己去尝试一下

function your_custom_function_name( $allcaps, $caps, $args ) {
if ( isset( $caps[0] ) ) {
switch ( $caps[0] ) {
case 'pay_for_order' :


$order_id = isset( $args[2] ) ? $args[2] : null;
$order = wc_get_order( $order_id );
$user = $order->get_user();
$user_id = $user->ID;

// When no order ID, we assume it's a new order
// and thus, customer can pay for it
if ( ! $order_id ) {
  $allcaps['pay_for_order'] = true;
  break;
}

$order = wc_get_order( $order_id );

if ( $order && ( $user_id == $order->get_user_id() || ! $order->get_user_id() ) ) {
  $allcaps['pay_for_order'] = true;
}
break;
}
}

return $allcaps;
}

add_filter( 'user_has_cap', 'your_custom_function_name', 10, 3 );

另外,以上代码即使可以实现免登录付款,但是你如果想要还能免登录下载,你还是需要继续用代码来实现的,所以,如果你没有代码基础,可能完全实现你的思路有点儿困难。