2017-09-15 5 views
0

$pi1$pi2 변수 값을 add_custom_price 함수 내부에서 가져 오려고하지만 아무 것도 작동하지 않는 것 같습니다.변수의 값을 다른 변수의 내부에서 얻는 방법

함수 클래스에서 액세스 할 수 있도록 변수를 설정하는 방법을 살펴 봤지만 올바르게 액세스하는 방법을 잘 모르겠습니다.

add_filter('gform_confirmation', array(gravity_pi,custom_confirmation), 10, 4); 
    class gravity_pi { 
     public $pi1; 
     public $pi2; 


     public function custom_confirmation($confirmation, $form, $entry, $ajax, $product_id, $pi1, $pi2) { 
      if($form['id'] == '2') { 
      $post = get_post($entry['post_id']); 
      $this->pi1 = rgar($entry, '20'); 
      $this->pi2 = rgar($entry, '21'); 
      $exclude_list = array("pi24","pi64","pi65","pi66","pi67","pi68","pi69","pi70","pi71","pi72","pi73","pi74","pi75","pi76","pi77","pi78","pi79","pi80","pi81","pi82"); 
      if(!in_array($this->pi1, $exclude_list) && !empty($this->pi1)){ 
       $target_product_id = '86'; 
       $pid1 = '86'; 
      }else{ 
       $pid1 = preg_replace("/[^0-9,.]/", "", $this->pi1); 
      } 
      if(!in_array($pi2, $exclude_list) && !empty($this->pi2)){ 
       $target_product_id = '87'; 
       $pid2 = '87'; 
      }else{ 
       $pid2 = preg_replace("/[^0-9,.]/", "", $this->pi2); 
      } 
      $product_ids = ''.$pid1.','.$pid2.''; 
      $url = 'https://*****.com/cart/?add-to-cart='.$product_ids.''; 
      $confirmation = array('redirect' => $url); 
      } 
      return $confirmation; 
     } 

     public function add_custom_price($cart_object, $entry,$form, $field, $input_id) { 

      foreach ($cart_object->cart_contents as $key => $value) { 

       if(86 == $value['data']->id) { 

        $value['data']->set_price( $this->pi1); 

       } 
       if(87 == $value['data']->id) { 

        $value['data']->set_price($this->pi2); 

       } 

     } 
     } 
    } 
    add_action('woocommerce_before_calculate_totals', array(gravity_pi,add_custom_price)); 
+0

add_custom_price() 함수에서 아무 것도 반환하지 않습니다. –

답변

0

당신은 당신이 그들에 액세스 같은 방법으로이를 참조하는 데 필요한 클래스 속성 (PI1 & PI2)를 설정하고 있습니다. 전의.

$ pid1에서 $ this-> pid1로 모든 참조를 변경하십시오 (선언하지 않은 경우). $ pid2에도이 작업을 수행하십시오.

확인이 비디오 출력 - 당신은 얻을 $this를 사용할 필요가 https://www.youtube.com/watch?v=4c4nP7GLL1c

0

은/클래스의 모든 속성을 설정합니다.

// set pi1 property value 
$this->pi1 = 10; 

//print/get property value 
echo $this->pi1;