-1

配送方法BACSの支払い方法を無効にする方法は?local delivery

以下のコードをfunctions.phpファイルに含めましたが、機能しません
多分誰かがこれで私を助けることができます。

function my_custom_available_payment_gateways( $gateways ) {
    $chosen_shipping_rates = WC()->session->get( 'chosen_shipping_methods' );
    // When 'local delivery' has been chosen as shipping rate
    if ( in_array( 'local_delivery', $chosen_shipping_rates ) ) :
        // Remove bank transfer payment gateway
        unset( $gateways['bacs'] );
    endif;
    return $gateways;
}
add_filter( 'woocommerce_available_payment_gateways', 'my_custom_available_payment_gateways' );
4

1 に答える 1

2

あなたは遠くありません。コードを機能させるには、配列のデータを操作しchosen shipping methodsて foreach ループでスラッグのみを取得する必要があります。

コードは次のとおりです。

add_filter( 'woocommerce_available_payment_gateways', 'unset_bacs_for_local_delivery' );

function unset_bacs_for_local_delivery( $gateways ) {
    // Not in backend (admin)
    if( is_admin() ) 
        return $gateways;

    // Initialising variables
    $chosen_shipping_method_ids = array();
    $chosen_shipping_methods = (array) WC()->session->get( 'chosen_shipping_methods' );

    // Iterating and manipulating the "chosen shipping methods" to get the SLUG
    foreach( $chosen_hipping_methods as $shipping_method_rate_id ) :
         $shipping_method_array = explode(':', $shipping_method_rate_id);
         $chosen_shipping_method_ids[] = $shipping_method_array[0];
    endforeach;

    //When 'local delivery' has been chosen as shipping method
    if ( in_array( 'local_delivery', $chosen_shipping_method_ids ) ) :
        // Remove bank transfer payment gateway
        unset( $gateways['bacs'] );
    endif;

    return $gateways;
}

このコードはテスト済みで、完全に機能します。

コードは、アクティブな子テーマ (またはテーマ) の functions.php ファイルに入ります。または、任意のプラグイン php ファイルでも。

于 2016-12-13T03:44:22.437 に答える