2017-09-15 48 views
0

我试图获得add_custom_price函数中的$pi1$pi2变量值,但似乎没有任何工作。我如何获得另一个变量的值

我已经看过设置变量可以从函数类访问,但我不知道如何正确访问它们。

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)。防爆。

<?php 
... 
$this->pi1 = rgar($entry, '20'); 

将$ pid1的所有引用(除了声明它们的地方)更改为$ this-> pid1。为$ pid2做这个。

看看这个视频 - https://www.youtube.com/watch?v=4c4nP7GLL1c

0

您需要使用$this获取/设置在类中的任何属性。

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

//print/get property value 
echo $this->pi1; 
相关问题