0

我正在写一个插件,我需要在上面使用 ajax。我尝试使用 admin ajax 并且它可以工作,但是当我使用它时,我可以将 var 存储在我的班级中。

示例:我的课就像

class Create_order{

public $product_order = array();

}

我的方法在构造函数中

public function __construct() {

add_action('wp_ajax_add_products_order', array(
            $this,
            'add_products_order'
        ));
        add_action('wp_ajax_nopriv_add_products_order', array(
            $this,
            'add_products_order'
        ));
        add_action('wp_ajax_calcul_total_order', array(
            $this,
            'calcul_total_order'
        ));
        add_action('wp_ajax_nopriv_calcul_total_order', array(
            $this,
            'calcul_total_order'
        ));

}

现在我将在我的数组中添加产品,例如:

public function add_product_order(){

    if (isset($_POST['id'])){

        $product  = wc_get_product($_POST['id']));

        $this->product_order[$product->id] = $product->name;

        echo json_encode($this->product_order[$product->id]);

        die();

    }

}

当我使用管理员 ajax 时,问题就在这里,我不能使用 $this。总是空的...

如果我不使用 wordpress 中的 admin ajax,那效果很好。问题是当我不使用管理 ajax 时,我无法使用 woocommerce 功能。

示例 wc_get_product 未定义。

我的阿贾克斯

$.ajax({ 
     type: "POST",
     dateType: "json",
     url: '<?php echo admin_url( 'admin-ajax.php' ); ?>',
     data:  "action=add_products_order&id=" + produit_id,                
     success: function(html) {                   
         console.log(html);
         var json = $.parseJSON(html);
         //here what i want to do               
     }
});

我的问题是我想使用 Admin ajax 来获取所有 wordpress 和 woocommerce 功能,并像 wc_get_product 一样使用它并将其存储在一个变量中。

这里来自 wordpress 的 admin ajax 不关心我的类实例。

此致

4

1 回答 1

0

您可以尝试通过将 PHP 会话放入 wordpress 来尝试使用它们,之后您只需使用$_SESSION

搜索后我找到了这个,但我没有测试过。

于 2019-03-26T15:27:01.217 回答