Javascript 如何将ajax数据传递给woocommerce筛选器?
如何将Ajax值表单order传递给woocommerce\u add\u cart\u item\u data filter 我试过这么做,但没用。似乎$\u数据是在woocommerce\u add\u cart\u item\u数据初始化之后设置的。我怎样才能修好它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
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;
}