Javascript 如何在Wordpress的Ajax回调中获取帖子id

Javascript 如何在Wordpress的Ajax回调中获取帖子id,javascript,php,ajax,wordpress,woocommerce,Javascript,Php,Ajax,Wordpress,Woocommerce,我使用Add-to-cart Ajax回调,但是我不知道如何在那里获得post-Id。 我的目标:我只想在特定页面上使用add_过滤器 PHP in functions.PHP add_filter( 'woocommerce_add_cart_item_data', 'iconic_add_engraving_text_to_cart_item' , 10, 3 ); function iconic_add_engraving_text_to_cart_item( $cart_item_da

我使用Add-to-cart Ajax回调,但是我不知道如何在那里获得post-Id。 我的目标:我只想在特定页面上使用add_过滤器

PHP in functions.PHP

add_filter( 'woocommerce_add_cart_item_data', 'iconic_add_engraving_text_to_cart_item' , 10, 3 );

function iconic_add_engraving_text_to_cart_item( $cart_item_data, $product_id, $variation_id ) {
    global $post;
    if ( $post->ID === 54214 )  {
        $engraving_text = 'test';
        $cart_item_data['iconic-engraving'] = $engraving_text;
        return $cart_item_data; 
    } else {
        return $cart_item_data; 
    }
}
这不起作用,因为
$post
为空(因为Ajax的数据钩子是商业\添加\购物车\项目\数据钩子)

因此,我在JS中尝试了以下代码,以获得JS中的post id(正常工作)

现在,我如何将id移交给Ajax回调以使用它

有什么建议吗


编辑:

我忘了告诉你,我计划在其他页面上使用“添加到购物车”操作,但不是在单个产品页面上


为此,我使用了一个第三方插件,它为我提供了所需产品的按钮,因此我没有使用默认的
$product
$post
对象(就像在单个产品页面中一样)。

我终于找到了这个“简单”问题的解决方案。我可以使用以下会话:

add_action( 'wp_head', 'set_session' );
add_filter( 'woocommerce_add_cart_item_data', 'iconic_add_engraving_text_to_cart_item' , 10, 3 );

function set_session()  {
    session_start();
    // add post id
    global $post;
    $post_id = $post->ID;
    $_SESSION['post_id'] = $post_id; 
}

function iconic_add_engraving_text_to_cart_item( $cart_item_data, $product_id, $variation_id ) {
        session_start();
        if( $_SESSION['post_id'] == 54214 ) {
            $engraving_text = 'test';
            $cart_item_data['iconic-engraving'] = $engraving_text;
            return $cart_item_data;
        } else {
            return $cart_item_data;
        }
}

我终于找到了解决这个“简单”问题的办法。我可以使用以下会话:

add_action( 'wp_head', 'set_session' );
add_filter( 'woocommerce_add_cart_item_data', 'iconic_add_engraving_text_to_cart_item' , 10, 3 );

function set_session()  {
    session_start();
    // add post id
    global $post;
    $post_id = $post->ID;
    $_SESSION['post_id'] = $post_id; 
}

function iconic_add_engraving_text_to_cart_item( $cart_item_data, $product_id, $variation_id ) {
        session_start();
        if( $_SESSION['post_id'] == 54214 ) {
            $engraving_text = 'test';
            $cart_item_data['iconic-engraving'] = $engraving_text;
            return $cart_item_data;
        } else {
            return $cart_item_data;
        }
}