繁体   English   中英

如何将 woocommerce 订单号更新为自定义 ACF 字段? (wordpress)

[英]How to update woocommerce order number to a custom ACF field? (wordpress)

我有一个名为“项目”的自定义帖子,它有一个名为“ponum”的 acf 字段。

当客户购买产品时,我想将客户的订单号添加到自定义帖子“项目”中用户帖子的“ponum”字段中。

获取订单号并创建帖子有效,但我不知道如何将此号码添加到感谢页面上的 acf 字段。


add_action( 'woocommerce_thankyou', 'create_post_on_order' );

function create_post_on_order($order_id)
{
  global $wpdb;
  //print('<pre>'.print_r( $wpdb, true ).'</pre>');
  $order = wc_get_order($order_id);
  if (!$order->get_id()) {
    return;
  }

  $current_user = wp_get_current_user();
  $current_user_id = $current_user->display_name;
  $post_title = $order_id . ' - ' . $current_user_id;
  // Check post already exit with our title or not
  $query = $wpdb->prepare(
    'SELECT ID FROM ' . $wpdb->posts . '
      WHERE post_title = %s
      AND post_type = \'project\'',
    $post_title
  );
  $wpdb->query($query);

  if (!$wpdb->num_rows) {
    $post_id = wp_insert_post(
      array(
        'author'   => $current_user_id,
        'post_title'    => $post_title,
        'post_status'   => 'publish',
        'post_type'   => 'project'
      )
    );
  }     
}

你能帮帮我吗?
谢谢你。

一旦获得了 acf 的值(即“$order_id”),就可以使用以下代码更新 acf 字段:

根据您的新代码更新答案

add_action('woocommerce_thankyou', 'create_post_on_order');

function create_post_on_order($order_id)
{
  $order = wc_get_order($order_id);
  if (!$order->get_id()) {
    return;
  }

  $current_user = get_userdata(get_current_user_id());
  $current_user_name = $current_user->display_name;
  $post_title = $order_id . ' - ' . $current_user_name;

  $query = new WP_Query(array(
    "author"    => get_current_user_id(),
    "post_type" => "project",
    "title"     => $post_title
  ));

  if ($query->found_posts == 0) {
    $post_id = wp_insert_post(
      array(
        'post_title'    => $post_title,
        'post_status'   => 'publish',
        'post_type'     => 'project',
        "meta_input"    => array(
          "ponum"       => $order_id
        )
      )
    );

    // It should work without this, this is just a double check!
    if (get_post_type($post_id) == "project") {

      $ponum_key = 'ponum';
      $ponum_field_value = get_field($ponum_key);

      if (empty($ponum_field_value)) {

        $ponum_field_value = $order_id;
        update_field($ponum_key, $ponum_field_value);
      }
    }
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM