Javascript 如何在Wordpress的Ajax回调中获取帖子id
我使用Add-to-cart Ajax回调,但是我不知道如何在那里获得post-Id。 我的目标:我只想在特定页面上使用add_过滤器 PHP in functions.PHPJavascript 如何在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_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;
}
}