【问题标题】:ACF - How to insert a repeater row inside a group?ACF - 如何在组内插入中继器行?
【发布时间】:2018-06-12 16:34:51
【问题描述】:

我正在使用 wp_insert_post() 以编程方式创建帖子。我的帖子正在成功创建。我也在使用高级自定义字段。我正在尝试使用 update_field() 和 update_sub_field() 命令将内容插入新帖子的转发器字段,但无济于事。在某些情况下,我可以插入数据,但随后使用 get_field('field_name', $post_id) 检索它会返回空。

是我遗漏了什么还是我将数据插入了错误的位置?

我的字段组可以看到here.

我试过了:

update_field( 'system_preset_1_inverter_group', 'test_data' , $new_quote_id );
update_sub_field( array('system_preset_1_inverter_group', 1, 'inverter'), 'test_data' , $new_quote_id );
update_sub_field( array('system_preset_1', 1, 'inverter_group', 1, 'inverter'), 'test_data' , $new_quote_id );

注意:这样做可以正常工作,但它不是组或转发器字段的一部分:

update_field( 'preset_or_custom' , $systems_preset , $new_quote_id );

我也试过这个:

// Inverters
$preset_1_flag = 1;
  foreach ( $system_preset_1_inverters as $insert_inverter_1 ) {
    update_field( 'system_preset_1_inverter_group_' . $preset_1_flag . '_inverter' , $system_preset_1_inverter_brand . ' ' . $insert_inverter_1, $new_quote_id );
    $preset_1_flag++;
  }

我很高兴使用任何进一步的必要代码对此进行扩展。

代码

  // 1) Savings TAB
  $savings_1 = 'Yes';
  $savings_2 = 'Quarterly';
  $savings_3 = 333;
  $savings_4 = 'select';
  $savings_5 = $wud_system_size;
  $savings_6 = 35;
  $savings_7 = 0.8;
  $savings_8 = 0.38;
  $savings_9 = 0.12;
  $savings_10 = $data['fields'][128]['value'];
  $savings_11 = $data['fields'][129]['value'];


  // 2) Systems TAB
  $systems_preset = 'Preset';
  $systems_size = $wud_system_size;

  $default_inverters = get_field('inverters', 'options');
  $default_brands = $default_inverters['default_inverter_brands'];

  // This function returns an array of inverters.
  $system_preset_1_inverters = \Roots\Sage\CPT_Solar\solar_quote_choose_string_inverter( 1, $systems_size );
  $system_preset_1_inverter_brand = $default_brands['brand_1'];
  $system_preset_1_panels = $default_panels;
  $system_preset_1_no_panels = ceil($systems_size * 1000 / $default_panel_wattage[1]);


  $system_preset_2_inverters = \Roots\Sage\CPT_Solar\solar_quote_choose_string_inverter( 2, $systems_size );
  $system_preset_2_inverter_brand = $default_brands['brand_2'];
  $system_preset_2_panels = $default_panels;
  $system_preset_2_no_panels = ceil($systems_size * 1000 / $default_panel_wattage[1]);


  $system_preset_3_inverters = '0.27'; // TBA
  $system_preset_3_inverter_brand = $default_brands['brand_3'];
  $system_preset_3_panels = $default_panels;
  $system_preset_3_no_panels = ceil($systems_size * 1000 / $default_panel_wattage[1]);


  // Insert the post into the database
  $new_quote_id = wp_insert_post( array(
      "post_title" => 'QID-temp',
      "post_content" => '',
      "post_type" => 'solar_quote',
      "post_status" => "publish"
  ));

  $the_quote['post_title'] = 'QID-' . $new_quote_id;
  $the_quote['ID'] = $new_quote_id;

  // Update post title.
  wp_update_post( $the_quote );

  // =========================
  // Update the post with all relevant details below.
  // =========================


  // THESE ALL SEEM TO WORK FINE.
  // 1) Update Savings Tab
  update_field( 'calculate_savings_system_size' , $savings_1 , $new_quote_id );
  update_field( 'electricity_bill_frequency' , $savings_2 , $new_quote_id );
  update_field( 'electricity_bill_amount' , $savings_3 , $new_quote_id );
  update_field( 'system_size_recommendation' , $savings_4 , $new_quote_id );
  update_field( 'selected_system_size' , $savings_5 , $new_quote_id );
  update_field( 'percentage_time_home' , $savings_6 , $new_quote_id );
  update_field( 'daily_supply_charge' , $savings_7 , $new_quote_id );
  update_field( 'rate_of_power' , $savings_8 , $new_quote_id );
  update_field( 'feed_in_tariff' , $savings_9 , $new_quote_id );
  update_field( 'savings_from' , $savings_10 , $new_quote_id );
  update_field( 'savings_to' , $savings_11 , $new_quote_id );


  // THIS ISN'T WORKING
  // Inverters
  $preset_1_flag = 1;
  foreach ( $system_preset_1_inverters as $insert_inverter_1 ) {
    update_field( 'system_preset_1_inverter_group_' . $preset_1_flag . '_inverter' , $system_preset_1_inverter_brand . ' ' . $insert_inverter_1, $new_quote_id );

    $preset_1_flag++;
  }

【问题讨论】:

    标签: php wordpress advanced-custom-fields


    【解决方案1】:

    我想你可以在后端看到你的 ACF 数据。

    在创建新帖子和使用更新字段时,需要使用字段键而不是字段名 -

    这是因为它在数据库中还没有具有该名称的引用 -

    所以在某些情况下,它会将其保存到后端的帖子中,但只有当您按下“更新”或“发布”时,ACF 才能在代码中读取。

    在帖子编辑页面上使用浏览器中的检查器查找字段键 - 并在“update_field”中使用它。

    它将类似于 field_xxxxxxxxx - 你需要使用整个东西 -

    如果这没有帮助,那么您可能使用了错误的数据格式来插入子字段。我认为应该是数组的形式。

    【讨论】:

    • 这将使用 id="acf-field_5a0920031ad52-field_5a138f6da9073-0-field_5a0920031ad53" 还是名称="acf[field_5a0920031ad52][field_5a138f6da9073][0][field_5a092003
    • 这就是 3 行的显示方式(它们是选择字段): Row 1 ID: acf-field_5a0920031ad52-field_5a138f6da9073-0-field_5a0920031ad53 Row 2 ID: acf-field_5a0920031ad52-field_5a138f6da9073-5a4ed406a621d-field_5a0920031ad53 Row 3 ID: acf-field_5a0920031ad52-field_5a138f6da9073-5a4ed4c9a621e-field_5a0920031ad53 Row 1 Name: acf[field_5a0920031ad52][field_5a138f6da9073][0][field_5a0920031ad53] Row 2 Name: acf[field_5a0920031ad52][field_5a138f6da9073][5a4ed406a621d][field_5a0920031ad53] Row 3 Name: acf[field_5a0920031ad52][field_5a138f6da9073][5a4ed4c9a621e][field_5a0920031ad53]
    • 对不起,我忘了提到你@Stender
    【解决方案2】:

    目前,我已经使用 update_post_meta() 管理了一个解决方法。这并不理想,但它通过手动将字段映射到字段键来工作。

      update_post_meta( $new_quote_id, '_system_preset_1', 'field_5a0920031ad52');
      update_post_meta( $new_quote_id, 'system_preset_1', '' );
    
      update_post_meta( $new_quote_id, '_system_preset_1_inverter_group', 'field_5a138f6da9073');
      update_post_meta( $new_quote_id, 'system_preset_1_inverter_group', count($system_preset_1_inverters));
    
    
      $preset_1_flag = 0;
      foreach ( $system_preset_1_inverters as $insert_inverter_1 ) {
    
        update_post_meta( $new_quote_id, 'system_preset_1_inverter_group_' . $preset_1_flag . '_inverter', $system_preset_1_inverter_brand . ' ' . $insert_inverter_1);
        update_post_meta( $new_quote_id, '_system_preset_1_inverter_group_' . $preset_1_flag . '_inverter', 'field_5a0920031ad53');
    
        $preset_1_flag++;
      }
    

    【讨论】:

      猜你喜欢
      • 2020-06-08
      • 2016-07-02
      • 2017-01-24
      • 2017-01-07
      • 2014-03-03
      • 1970-01-01
      • 1970-01-01
      • 2013-12-29
      • 2015-03-30
      相关资源
      最近更新 更多