Я пытаюсь получить (через Ajax) пользовательское имя, которое я установил для своего продукта, но пока не могу его получить.
Вот мой код для установки пользовательского имени;
add_action( 'woocommerce_before_calculate_totals', 'add_custom_price', 10, 1);
function add_custom_price( $cart_obj ) {
// This is necessary for WC 3.0+
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Avoiding hook repetition (when using price calculations for example)
if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
return;
// Loop through cart items
foreach ( $cart_obj->get_cart() as $cart_item ) {
$cart_item['data']->set_name( 'My Test Name' );
$cart_item['data']->set_price( 40 );
}
}
В моем Javascript я выполняю свой вызов Ajax при обновлении оформления заказа:
$( document.body ).on( 'updated_checkout', function() {...
И оттуда я вызываю эту функцию PHP;
add_action( 'wp_ajax_retrieve_custom_product_name', 'retrieve_custom_product_name' );
function retrieve_custom_product_name() {
// This is necessary for WC 3.0+
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
return;
$items = WC()->cart->get_cart();
foreach($items as $item => $cart_item) {
$item_name = $cart_item['data']->get_name();
}
echo $item_name;
wp_die();
}
Я ожидал, что $ cart_item ['data'] -> get_name ();чтобы дать мне пользовательское имя, которое я установил, но оно просто возвращает оригинальное имя продукта.
У кого-нибудь есть идеи относительно того, что я делаю здесь неправильно?