Обновление поля ACF с помощью идентификаторов терминов приобретенного продукта - WooCommerce - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь обновить поле пользователя 'product_themes' в WooCommerce / WP с помощью функции, которая собирает term_ids для элементов в заказе и добавляет их в профиль пользователя в поле 'product_themes' во время, когдазаказ размещен.Это работает, когда я указываю массив идентификаторов в коде, но, похоже, не собирает идентификаторы терминов из каждого элемента для пользовательской таономии «тема».

  add_action('woocommerce_thankyou', 'add_theme_to_user');
  add_action('woocommerce_new_order', 'add_theme_to_user');
  function add_theme_to_user($order_id){
      $current_user = wp_get_current_user();
      $userID = $current_user->ID;
      $user = 'user_' . $userID; 
      $prodCats = array();
      $order = new WC_Order( $order_id );
      $items = $order->get_items();
      $push = array();
      foreach ( $items as $item ) {
          $item_id = $item['order_item_id']; 
          $product_name = $item['name'];
          $terms = wp_get_post_terms( $itemID, 'theme' );
          foreach ( $terms as $term){
              array_push($push, $term->term_id);
          }
      }
     update_field('product_themes', $push, 'user_' . $userID);
  }

Я сверился с документацией WooCommerce и искал решение по любым подобным проблемам, но я не могу заставить его работать.Я что-то пропустил?

Большое спасибо.

1 Ответ

0 голосов
/ 11 июня 2018

Я сам нашел решение, изменил $ itemID = $ item ['order_item_id'];$ itemID = $ item ['product_id'];

add_action('woocommerce_thankyou', 'add_theme_to_user');
add_action('woocommerce_new_order', 'add_theme_to_user');
function add_theme_to_user($order_id){
    $current_user = wp_get_current_user();
    $userID = $current_user->ID;
    $user = 'user_' . $userID; 
    $prodCats = array();
    $order = new WC_Order( $order_id );
    $items = $order->get_items();
    $push = array();
        foreach ( $items as $item ) {
            $itemID = $item['product_id']; 
            $terms = wp_get_post_terms( $itemID, 'theme' );
                foreach ( $terms as $term){
                    array_push($push, $term->term_id);
                    update_field('product_themes', $push, 'user_' . $userID);
                }
        }
    update_field('product_themes', $push, 'user_' . $userID);
  }
...