2017-10-05 5 views
0

우리는이 제품의 개별 사용자 정의를 위해 WooCommerce Custom Fields 상업용 플러그인을 Woocommerce 전자 상점에 사용하고 있으며 'wccf'키가있는 경우 지불 방법을 숨기는 방법을 찾으려고합니다. 제품 메타.Woocommerce의 제품 메타를 기반으로 한 지불 방법 숨기기

아래 코드를 업그레이드하려고하는데 배송 국가 확인을 바꾸고 싶지만 'wccf'키를 얻고 확인하는 방법을 모르겠습니다.

function payment_gateway_disable_country($available_gateways){ 
    global $woocommerce; 

    if (isset($available_gateways['cod']) && $woocommerce->customer->get_shipping_country() <> 'IT'){ 
     unset($available_gateways['cod']); 
    } 
    return $available_gateways; 
} 
add_filter('woocommerce_available_payment_gateways', 'payment_gateway_disable_country'); 

아무도 도와 줄 수 있습니까?

+0

item meta = 제품 메타가 맞습니까? –

+0

나는이 (https://ctrlv.cz/jGxr)을 의미한다. (플러그 - 인의 문서에있다.) – mchtrnk

+0

친절하게도이 플러그인은 진짜 악몽이다. (많은 사람들이 Woocommerce를 사용하여 미해결 문제를 가지고있다. 여기 StackOverFlow에서) ... 대신 [Advanced Custom Fields] (https://wordpress.org/plugins/advanced-custom-fields/) 플러그인을 사용하는 것이 좋습니다. 가장 좋은 방법은 사용자 정의 코드로 사용자 정의 필드를 만드는 것입니다. ** 답변자는 실제 플러그인으로 데이터를 가져 오는 방법을 추측 할 수 없습니다. ** – LoicTheAztec

답변

0

귀하의 도움과 도움에 감사드립니다. 마지막으로, 플러그인 개발자가 내 문제를 해결하는 코드를 내게 보냅니다.

$cart = WC()->cart->get_cart(); 
$wccf_is_set = false; 

foreach ($cart as $cart_item) { 

if (isset($cart_item['wccf'])) { 

    // mark that there's data set 
    $wccf_is_set = true; 
    } 
} 

if ($wccf_is_set === true) { 
// do what you need if the data is set 

} 
0

아래 코드로 시도하십시오. 제품을 가정하는 것은 자사의 메타 데이터에 wccf 항목이의 그것을해야 필터에서 다음과 같은

function payment_gateway_disable_country($available_gateways){ 
    global $woocommerce; 
    if (isset($available_gateways['cod']) && $woocommerce->customer->get_shipping_country() <> 'IT'){ 
     //fetching the cart 
     $session_data = WC()->session->get('wccf'); 
     if(!empty($session_data)){ 
      unset($available_gateways['cod']); 
     } 
    } 
    return $available_gateways; 
} 
add_filter('woocommerce_available_payment_gateways', 'payment_gateway_disable_country'); 
+0

도움 주셔서 감사합니다! 유감스럽게도 내 문제를 해결하지 못합니다. (맞춤 결제 기능을 추가했지만 결제 방법에서 COD를 볼 수 있습니다.) _ 잠시 전에 얻은 플러그인 개발자의 조언입니다. "모든 장바구니를 반복해야합니다. 항목을 확인하고 [wccf] 키가 있는지 확인한 다음 예인 경우 배송 방법을 제거하십시오. "_ – mchtrnk

0

뭔가 functions.php에서 코드를 넣습니다.

function payment_gateway_disable_wccf($available_gateways){ 

    $cart = WC()->cart; 

    if($cart){ 

     foreach($cart->get_cart() as $currItem){ 

      if(get_post_meta($currItem['product_id'], 'wccf', true)) 
       unset($available_gateways['cod']); 
     } 
    } 

    return $available_gateways; 
} 

add_filter('woocommerce_available_payment_gateways', 'payment_gateway_disable_wccf'); 
+0

도움을 주셔서 감사합니다. 유감스럽게도 결제 수단에 COD가 표시되어이 코드가 작동하지 않습니다. 나는 사용자 정의를 추가하여 [this] (https://ctrlv.cz/y0dE)와 같은 것을 추가 할 것이다. 다른 생각이있다. ** Gravírovat **라는 단어가 장바구니 페이지에 있는지 확인할 수 있는가? – mchtrnk