【问题标题】:Import ACF Repeater Field Values from CSV从 CSV 导入 ACF 中继器字段值
【发布时间】:2021-04-16 15:04:53
【问题描述】:

我正在尝试使用文件字段 (dd_csv) 将大量数据导入转发器字段 (mortgage_providers) 的子字段,以将文件上传到帖子并返回一个数组。然后用 PHP 循环遍历每一行并更新转发器字段。我尝试了以下方法,但似乎无法正常工作。

      if( get_field('dd_csv') ) {
        // load csv with SERVER PATH instead of URL
        $csv = get_attached_file(get_field('dd_csv')['id']);
        if(($handle = fopen($csv, "r")) !== FALSE) {
          $count = 0;
          while(($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
            // $count = acf row, $data[0] = csv column 1 value
            update_sub_field(array('mortgage_providers', $count, 'mortgage_provider_name'), $data[0], 'option');
            $count++;
          }

          fclose($handle);
        }
      }

以下是数据示例:

  • 在符号 Sipp
  • 012 财产份额
  • 121 条法律
  • 第一源直接
  • 第一站金融
  • 33 KWS
  • 3i
  • 3M
  • 3mc
  • 3XD
  • 5 箭
  • AA 商业保险
  • 美国国际集团
  • A1 贷方不相关
  • AA 友好协会
  • AA 保险
  • 算盘
  • ...

CSV 的第 1 列总共有 1000 多行。

谢谢

【问题讨论】:

    标签: php wordpress advanced-custom-fields


    【解决方案1】:

    我会挂在on save action

    <?php
    
    add_action( 'save_post', 'prefix_check_files', 10, 3 );
    
    function prefix_check_files( $post_id, $post, $update ) {
    if( get_field('dd_csv', $post_id) ) {
      // load csv with SERVER PATH instead of URL
      $csv = get_attached_file(get_field('dd_csv', $post_id)['id']);
      if(($handle = fopen($csv, "r")) !== FALSE) {
        $count = 0;
        while(($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
          // $count = acf row, $data[0] = csv column 1 value
          update_sub_field(array('mortgage_providers', $count, 'mortgage_provider_name'), $data[0], 'option');
          $count++;
        }
        fclose($handle);
      }
    }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-30
      • 2017-01-01
      • 2017-03-17
      • 2018-04-11
      • 2014-09-22
      • 2018-07-17
      • 2015-03-30
      • 2019-10-16
      相关资源
      最近更新 更多