Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将ajax数据传递给woocommerce筛选器?_Javascript_Php_Ajax_Wordpress_Woocommerce - Fatal编程技术网

Javascript 如何将ajax数据传递给woocommerce筛选器?

Javascript 如何将ajax数据传递给woocommerce筛选器?,javascript,php,ajax,wordpress,woocommerce,Javascript,Php,Ajax,Wordpress,Woocommerce,如何将Ajax值表单order传递给woocommerce\u add\u cart\u item\u data filter 我试过这么做,但没用。似乎$\u数据是在woocommerce\u add\u cart\u item\u数据初始化之后设置的。我怎样才能修好它 class Insertion { private $_data = null; public function __construct() { add_action( 'wp_ajax_s

如何将Ajax值表单order传递给woocommerce\u add\u cart\u item\u data filter

我试过这么做,但没用。似乎$\u数据是在woocommerce\u add\u cart\u item\u数据初始化之后设置的。我怎样才能修好它

class Insertion {

    private $_data = null;

    public function __construct() {
        add_action( 'wp_ajax_ss_AjaxData', array($this, 'ss_AjaxData') );
        add_action( 'wp_ajax_nopriv_ss_AjaxData', array($this, 'ss_AjaxData') );
        add_filter( 'woocommerce_add_cart_item_data', array($this, 'add_cart_item_custom_data_vase'), 10, 2 );
        add_filter( 'woocommerce_get_cart_item_from_session', array($this, 'get_cart_items_from_session'), 1, 3 );
        add_filter( 'woocommerce_get_item_data', array($this, 'get_item_data'),10,2);
    }

    function add_cart_item_custom_data_vase( $cart_item_meta ) {
        if($this->_data != null) {
            $cart_item_meta['test_field'] = $this->_data;
        }

        return $cart_item_meta; 
    }

    function get_cart_items_from_session( $cart_item_meta, $values ) {
        if( isset( $values['test_field'] ) ) {
            $cart_item_meta['test_field'] = $values['test_field'];
        }

        return $cart_item_meta;
    }
    public function get_item_data( $other_data, $cart_item ) {
        if( isset( $cart_item['test_field'] ) ) {
            $other_data['test_field'] = array(
                'name' => $cart_item['test_field'], 
                'value' =>$cart_item['test_field']
            );
        }

        return $other_data;
}
    function ss_AjaxData() {
        if(isset($_REQUEST)) {
            $data = $_REQUEST['ss_html'];
            $this->_data = wp_filter_nohtml_kses($data);
            echo $this->_data;  
        }
        exit();
    }
}
修复(如果有人会面临相同的问题): 找到了修复它的方法。我没有使用私有变量,而是使用session。通过一些修复扩展代码

    function ss_AjaxData() {
        if(isset($_REQUEST)) {
            session_start();
            $_SESSION['test_field'] = $_REQUEST['ss_html']; 
        }
        exit();
    }

    function add_cart_item_custom_data_vase( $cart_item_meta ) {
        session_start();
        $cart_item_meta['test_field'] = $_SESSION['test_field'];

        return $cart_item_meta; 
    }